GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara _MOVE_ file dengan scp?

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.


Linux
  1. Cara mengenkripsi file dengan gocryptfs di Linux

  2. Cara Unzip File di Linux (dengan Contoh)

  3. Cara Mentransfer File di Linux dengan SCP dan Rsync

  1. Bagaimana Cara Menemukan File Dengan Subpath Tertentu?

  2. Cara Mentransfer File dengan Aman Menggunakan SCP

  3. Cara Menemukan File dengan Perintah fd di Linux

  1. Cara Mengecualikan File dan Direktori dengan Rsync

  2. Salin file dengan SCP dan Rsync

  3. Cara menyalin banyak file secara bersamaan menggunakan scp