Use .
para arquivar o diretório inteiro em vez de *
tar cf ../test.tar .
Atualmente, estou trabalhando em uma tarefa de arquivamento de um aplicativo da web antigo. Eu fiz back-ups do banco de dados e do próprio aplicativo, agora estou tentando fazer backup do armazenamento de arquivos que contém todos os arquivos enviados.
Infelizmente, o aplicativo não sempre manipulou corretamente os arquivos enviados, o que resultou em muitos arquivos contendo o caminho completo no cliente que fez o upload deles, por exemplo, "C: \ test \ test.doc".
Eu quero criar um arquivo tar contendo todos os arquivos, mas o tar cf dá erros nos arquivos com dois pontos em seus nomes. Eu tentei escapar, mas não tive sorte.
Um exemplo:
-rw-r--r-- 1 root root 29696 Jan 3 09:43 C:\test\test.doc
Apenas coloque tudo:
[root@server test]# tar cf test.tar *
tar: C\:\test\test.doc: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
Cercado por aspas duplas:
[root@server test]# tar cf test.tar "C:\test\test.doc"
tar: C\:\test\test.doc: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
Usando o caractere de escape:
[root@server test]# tar cf test.tar C\:\test\test.doc
tar: C\:\test\test.doc: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors
Existe uma maneira de conseguir isso (sem renomear o arquivo)?
O seguinte também funciona (escape do \
entre aspas simples):
$ touch 'C:\test\test.doc'
$ ls
C:\test\test.doc
$ tar cf test.tar 'C:\test\test.doc'
$ tar tf test.tar
C:\test\test.doc