回答:
おそらくsshを介したrsyncがこの--remove-source-files
オプションの最善策です
rsync -avz --remove-source-files -e ssh /this/dir remoteuser@remotehost:/remote/dir
簡単なテストで得られます。
[tomh@workstation001 ~]$ mkdir test1
[tomh@workstation001 ~]$ mkdir test2
[tomh@workstation001 ~]$ touch test1/testfile.1
[tomh@workstation001 ~]$ ls test1/
testfile.1
[tomh@workstation001 ~]$ rsync --remove-source-files -av -e ssh test1/testfile.1 tomh@localhost:/home/tomh/test2/
sending incremental file list
sent 58 bytes received 12 bytes 10.77 bytes/sec
total size is 0 speedup is 0.00
[tomh@workstation001 ~]$ ls test1/
[tomh@workstation001 ~]$
[tomh@workstation001 ~]$ ls test2/
testfile.1
@SvenWが述べたように、これ-e ssh
はデフォルトなので省略できます。
smv() { rsync -az --remove-source-files "$@"; }
ツールボックスに追加しました。ありがとうございました。
この質問はうまく答えられ、答えは受け入れられましたが、トップページのトップに浮かんでいたので、少なくともエレガントではないにしても、より正確に答えようと思ったのです。はい、からの戻りコードを使用できますscp
。私は頻繁にそれを行います。でbash
:
scp foo user@server:/destination && rm foo
複数のファイルについては、スタックの障害を正しくコピーして処理するために複数のファイルについて指摘します。複数のファイルの場合:
for file in bar*; do scp "$file" user@server:/destination && rm "$file" ; done
この最後はssh-agent
、を使用している場合にのみ実用的です。
-l
フラグを使用して帯域幅制限を処理できます。たとえば、-l 8192
転送を8192 kb / sで制限するには
私の状況では、sshポートは22ではないので
rsync -avz --remove-source-files -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
私のために働く。
-e ssh
これは長年の暗黙のデフォルトであり、通常はこのパラメーターを使用する必要は通常ありません。