O problema é que o shell expande seu /home/security/Brick/*
com uma longa (muito longa) lista de arquivos antes passando para cp
.
Se você quiser copiar todo o diretório Brick
, talvez a coisa mais direta seja:
cp -rn /home/security/Brick ~/.gvfs/"cam on atm-bak-01.local"/
usando o sinalizador "recursivo" para cp
. Isso também copiará toda a estrutura em Brick (subdiretórios incluídos).
Uma possibilidade é usar um loop for
:
for file in /home/security/Brick/*;
do
cp -n $file ~/.gvfs/"cam on atm-bak-01.local/Brick"
done
Ou usando a localização:
find /home/security/Brick/ -type f -exec cp -n {} ~/.gvfs/"cam on atm-bak-01.local/Brick" \;
Neste comando, -type f
diz para selecionar apenas os arquivos (sem diretórios), então para cada arquivo executa o comando especificado: {}
é substituído pelo nome do arquivo, e \;
é o ponto-e-vírgula necessário para fechar o arquivo -exec
cláusula, escapou caso contrário, o shell irá interpretá-lo (e remover).
O comando após -exec
pode ser o que você quiser (por exemplo, em vez de cp -n
você pode usar cp -av
para copiar no modo de arquivo (incluindo registros de data e propriedade) e sobrescrever ou usar outros comandos ( mas : você deve entender escapes, globbing e quotation antes, caso contrário você pode causar muitos danos - veja por exemplo " aprendendo o shell ").
Encontrar é um comando muito poderoso --- vale a pena ser bem aprendida. Eu encontrei tutoriais interessantes aqui , aqui e aqui .
Sobre fazer um backup com cp -n
:
Observe que o sinal -n
não substituirá os arquivos existentes, portanto, se você fizer alterações de um arquivo no diretório local que foi copiado anteriormente, ele não será copiado novamente ... e você terá no backup a versão antiga dele.
Por esse motivo, recomendo usar um utilitário de backup ou sincronização, como Unison ou rsync , para fazer este trabalho. Esses utilitários apenas atualizam os arquivos alterados, podem minimizar as gravações (e, portanto, a largura de banda da rede), e geralmente são muito mais seguros. Seu backup pode ser resolvido com rsync
simplesmente dizendo:
rsync -azvv /home/security/Brick ~/.gvfs/"cam on atm-bak-01.local/Brick"
(tome cuidado para não adicionar um final "/" no final --- ou o rsync criará um subdiretório Brick / Brick. Sim, rsync
é poderoso e bastante temperamental às vezes.)
O Unison tem uma boa interface gráfica e também lhe dirá se há mudanças conflitantes em seu repositório - então essa seria minha opção preferida.