Tar cf não pode arquivar arquivos com dois pontos em seu nome

0

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)?

    
por verhage 03.01.2017 / 10:01

2 respostas

3

Use . para arquivar o diretório inteiro em vez de *

tar cf ../test.tar .
    
por 03.01.2017 / 10:07
1

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
    
por 03.01.2017 / 10:23