Perintah transfer file rekursif SCP

11

Ingin tahu apakah mungkin untuk menentukan urutan penyortiran saat mentransfer file dengan scp.

Sebagai contoh: $ scp -r "user@host:/path/to/download/" .

[... files download in a seemingly random order ...]

Karena mungkin ini terkait dengan bagaimana scpfungsinya, adakah cara untuk mengkonfigurasi ssh pada sisi sumber (server) sehingga file ditransfer, misalnya, dalam urutan nama file yang naik?

Dmitry Minkovsky
sumber

Jawaban:

4

Saya harus memecahkan masalah dengan tardan pipa-transparansi ssh. Contohnya dapat dilihat di bawah ini, PC jarak jauh dinamai bar. Sebelum pengujian, saya membuat tiga file kosong /tmp/foodengan mengeksekusi ssh bar 'mkdir /tmp/foo ; touch /tmp/foo/{a,b,c}'.

$ ssh bar 'cd /tmp/foo ; ls | sort -r | tar -cT -' | tar -xv
c
b
a
$ ls -l a b c
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 a
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 b
-rw-r--r-- 1 dnet dnet 0 nov   29 17:07 c

The -Tbendera tarmerek itu membaca nama file untuk berkemas dari parameter berikutnya, dan -berarti input standar. Sekarang Anda hanya perlu mem-pipe nama file ke dalamnya, yang bisa berasal dari ls(seperti dalam contoh) atau finduntuk tugas-tugas yang lebih rumit. Dengan pengaturan ini, Anda dapat menggunakan sortuntuk menunjukkan urutan tepat file akan dikirim melalui SSH (dalam hal ini, -rfile yang diurutkan dalam urutan abjad terbalik). Ini -vhanya ditambahkan ke final, membongkar tar, sehingga pesanan terlihat.

Dnet
sumber
Woah, pendekatan tingkat bawah yang bagus dan menyajikan gambar yang lebih luas dengan sangat jelas. Terima kasih.
Dmitry Minkovsky
Bagaimana pendekatan semacam itu dapat diperluas untuk mentransfer file secara individual alih-alih dalam arsip? Akan loop iterasi hasil dari sortdalam barperintah remote entah bagaimana mencapai hal ini?
Dmitry Minkovsky
Mungkin, tapi saya tidak melihat masalah dengan mentransfernya sebagai arsip. Jika Anda memikirkannya, tidak ada banyak perbedaan antara pendekatan ini dan scp- keduanya mengirim metadata dan konten untuk setiap file, mereka hanya menggunakan "protokol" yang berbeda. Saya kira Anda bisa mengulangi hasilnya, tetapi kemudian Anda harus mengurus file dengan spasi putih dalam nama mereka.
dnet
2
@dimadima, jika Anda sangat menyukai jawabannya, mungkin Anda bisa menerima jawabannya .
Peter V. Mørch
Jawaban ini berfungsi, tetapi kita harus menyesuaikannya dengan kasus ketika file memiliki spasi dalam nama.
Ruslan
1

Satu dapat mencapai transfer file dengan urutan abjad menggunakan rsync:

rsync -P -e ssh -r user@remote_host:/some_path local_path

Pmemungkinkan pengunduhan sebagian, emenetapkan protokol SSH dan runduhan secara rekursif.

Lenar Hoyt
sumber
0

Jika ini membantu seseorang, saya memberikan solusi sederhana di sini:

/programming/23067175

Masih menunggu cara yang lebih cerdas untuk melakukannya!

Victor Sojo
sumber
1
Ini hanya sebuah tautan. Untuk jawaban yang lengkap, berikan jawabannya di sini dan kemudian berikan tautan untuk referensi.
Kevin Panko