คำสั่งการถ่ายโอนไฟล์วนซ้ำของ SCP


11

scpสงสัยว่ามันเป็นไปได้ที่จะระบุลำดับการจัดเรียงเมื่อถ่ายโอนไฟล์ที่มี

ตัวอย่างเช่น: $ scp -r "user@host:/path/to/download/" .

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

เนื่องจากนี่อาจเกี่ยวข้องกับวิธีการscpใช้งานมีวิธีการกำหนดค่า ssh บนซอร์ส (เซิร์ฟเวอร์) - ด้านใดบ้างเพื่อให้สามารถถ่ายโอนไฟล์ตัวอย่างเช่นเรียงลำดับชื่อไฟล์จากน้อยไปหามาก?

คำตอบ:


4

ฉัน whould แก้ปัญหาด้วยและท่อความโปร่งใสของtar ตัวอย่างที่สามารถมองเห็นด้านล่างเครื่องคอมพิวเตอร์ระยะไกลเป็นชื่อssh barก่อนการทดสอบผมสร้างสามไฟล์ที่ว่างเปล่าในโดยการดำเนินการ/tmp/foossh 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

-Tธงชาติtarทำให้มันอ่านชื่อไฟล์ที่จะแพ็คจากพารามิเตอร์ต่อไปและ-หมายความว่าเข้ามาตรฐาน ตอนนี้คุณเพียงแค่ต้องไพพ์ชื่อของไฟล์ลงไปซึ่งมันอาจมาจากls(ตามตัวอย่าง) หรือfindสำหรับงานที่ยุ่งยากกว่า ด้วยการตั้งค่านี้คุณสามารถใช้sortเพื่อระบุลำดับที่แน่นอนว่าไฟล์จะถูกส่งผ่าน SSH (ในกรณีนี้-rไฟล์ที่เรียงลำดับตามตัวอักษรแบบย้อนกลับ) คำสั่ง-vนี้จะถูกเพิ่มเข้าไปในขั้นตอนสุดท้ายไม่เปิดหีบห่อtarเพื่อให้สามารถเห็นคำสั่งซื้อได้


ว้าววิธีการระดับล่างที่ยอดเยี่ยมและนำเสนอภาพที่กว้างขึ้นอย่างชัดเจน ขอบคุณ.
Dmitry Minkovsky

วิธีการดังกล่าวจะสามารถขยายวิธีการถ่ายโอนไฟล์แต่ละรายการแทนการเก็บถาวรได้อย่างไร? การวนซ้ำจะทำซ้ำผลลัพธ์จากsortในbarคำสั่งระยะไกลจะทำสิ่งนี้สำเร็จหรือไม่?
Dmitry Minkovsky

มันอาจ แต่ฉันไม่เห็นปัญหาในการถ่ายโอนเป็นอาร์คติ หากคุณคิดเกี่ยวกับมันไม่มีความแตกต่างระหว่างวิธีการนี้และscp- ทั้งส่งเมทาดาทาและเนื้อหาสำหรับแต่ละไฟล์พวกเขาเพียงแค่ใช้ "โปรโตคอล" ที่แตกต่างกัน ฉันเดาว่าคุณสามารถทำซ้ำผลการค้นหา แต่แล้วคุณควรดูแลไฟล์ที่มีช่องว่างในชื่อของพวกเขา
dnet

2
@dimadima หากคุณต้องการคำตอบมากบางทีคุณอาจจะยอมรับคำตอบ
Peter V. Mørch

คำตอบนี้ใช้ได้ แต่ต้องปรับเป็นกรณีเมื่อไฟล์มีช่องว่างในชื่อ
Ruslan

1

หนึ่งสามารถบรรลุการถ่ายโอนไฟล์ตามลำดับตัวอักษรโดยใช้rsync:

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

Pอนุญาตให้ดาวน์โหลดบางส่วน, eตั้งค่าโปรโตคอล SSH และrดาวน์โหลดแบบเรียกซ้ำ


0

ในกรณีนี้ช่วยใครบางคนฉันให้วิธีง่ายๆที่นี่:

/programming/23067175

ยังคงรอวิธีที่ชาญฉลาดที่จะทำมัน!


1
นี่เป็นเพียงลิงค์ สำหรับคำตอบที่สมบูรณ์ให้คำตอบที่นี่แล้วให้ลิงค์สำหรับการอ้างอิง
Kevin Panko
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.