cp comando para backup

0

Estou tentando copiar (backup) arquivos de pastas específicos (sem diretórios e arquivos de subdiretórios) para uma segunda pasta. Aninhava o comando find com o backstick mas me dava erro para cada arquivo com file_name (copy) .extension

cp -a -t /home/gianmarco/backup2 'find /home/gianmarco/backup1 -maxdepth 1 -type f'
cp: cannot stat '/home/gianmarco/backup1/helloWorld': No such file or directory
cp: cannot stat '(copy).txt': No such file or directory
cp: cannot stat '/home/gianmarco/backup1/2nuovoFile': No such file or directory
cp: cannot stat '(copy).txt': No such file or directory

Alguma sugestão? Obrigado!

    
por Gianmarco Rubbini 15.01.2018 / 08:22

4 respostas

2

Use find para executar cp nesses arquivos:

find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp -at /home/gianmarco/backup2 {} +

Dessa forma, espaços e outros caracteres especiais nos nomes de arquivos não serão um problema. Quando você usa a substituição de comandos sem citar, o shell irá dividir a saída em espaços, depois executar a expansão de curingas, etc. É mais simples usar find para isso. Ou veja Como posso excluir todos os subdiretórios, mas incluir arquivos de um diretório no rsync?

    
por muru 15.01.2018 / 08:31
0

Tente usar o rsync . Neste exemplo eu chamo syncronize todos os arquivos & amp; pastas no diretório src para dst , excluindo .sh arquivos, preservando permissões, propriedade, registro de data e hora:

rsync -a --exclude '*.sh' /path/to/src /path/to/dst

Além disso, você pode adicionar alguns parâmetros adicionais, dependendo da sua situação.

    
por M. Dm. 15.01.2018 / 09:53
0

Experimente o comando abaixo:

find /path_to_source/ -depth -type f -exec cp -apt /path_to_target_directory/ {} \;

em que a opção -depth faz com que find percorra o sistema de arquivos em uma ordem de profundidade.

    
por Rajesh Keladimath 15.01.2018 / 09:14
-1

find /home/gianmarco/backup1 -maxdepth 1 -type f -exec cp {} /home/gianmarco/backup2

    
por muclux 15.01.2018 / 08:30