Solusi 1:
rsync over ssh mungkin pilihan terbaik Anda dengan --remove-source-files opsi
rsync -avz --remove-source-files -e ssh /this/dir example@unixlinux.online:/remote/dir
tes cepat memberi;
[example@unixlinux.online ~]$ mkdir test1
[example@unixlinux.online ~]$ mkdir test2
[example@unixlinux.online ~]$ touch test1/testfile.1
[example@unixlinux.onlineorkstation001 ~]$ ls test1/
testfile.1
[example@unixlinux.online ~]$ rsync --remove-source-files -av -e ssh test1/testfile.1 example@unixlinux.online:/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
[example@unixlinux.online ~]$ ls test1/
[example@unixlinux.online ~]$
[example@unixlinux.online ~]$ ls test2/
testfile.1
Seperti yang disebutkan @SvenW, -e ssh adalah default sehingga dapat dihilangkan.
Solusi 2:
Gunakan rsync bukannya scp :
rsync -avz --remove-source-files /sourcedir example@unixlinux.online:/targetdir
Info selengkapnya dengan man rsync .
Solusi 3:
Pertanyaan ini telah dijawab dengan baik, dan jawabannya diterima, tetapi karena itu muncul di bagian atas halaman depan, saya pikir setidaknya saya akan mencoba menjawabnya dengan lebih tepat, jika kurang elegan. Ya, Anda dapat menggunakan kode pengembalian dari scp , dan saya sering melakukannya. Di bash :
scp foo example@unixlinux.online:/destination && rm foo
Saya mengambil poin Anda tentang banyak file untuk disalin dan menangani kegagalan di tumpukan dengan benar, jadi untuk banyak file:
for file in bar*; do scp "$file" example@unixlinux.online:/destination && rm "$file" ; done
Yang terakhir ini hanya praktis jika Anda menggunakan ssh-agent , tapi saya sangat berharap demikian.
Solusi 4:
dalam situasi saya, port ssh bukan 22, jadi
rsync -avz --remove-source-files -e "ssh -p $portNumber" example@unixlinux.online:/path/to/files/ /local/path/
bekerja untuk saya.
Solusi 5:
jika Anda memiliki server target yang lebih lama seperti saya, Anda tidak dapat menggunakan
--remove-source-files
tetapi Anda harus menggunakan
--remove-sent-files --protocol=29
sebagai gantinya.