Se você não puder usar rsync
e quiser remover os arquivos de origem somente após cada arquivo ter sido copiado com sucesso, poderá fazer algo assim para um diretório por diretório, transferência arquivo a arquivo:
if cd /path/to/files; then
for file in *; do
if scp -pr "$file" [email protected]:/destination/files/"$file"; then
rm -fr "$file"
else
echo "Transfer of '$file' failed. Not removing local copy." 1>&2
fi
done; fi
Se você quiser fazer uma verificação de sanidade adicional antes de excluir o arquivo local, adicione uma verificação de consistência, mas isso reduzirá a velocidade de arquivos muito grandes, e essa soma de verificação rápida e suja só funcionará em arquivos ; não diretórios:
if cd /path/to/files; then
for file in *; do
if scp -pr "$file" [email protected]:/destination/files/"$file"; then
if [[ "$(md5sum < "$file" )" = "$( ssh [email protected] md5sum < /destination/files/"$file" )" ]]; then
rm -fr "$file"
else
echo "Unable to validate remote '$file'. Not removing local copy" 1>&2
fi
else
echo "Transfer of '$file' failed. Not removing local copy." 1>&2
fi
done; fi