rsync ไม่ได้ใช้ - ไฟล์จากตัวเลือก?


13

ฉันพยายามที่จะทำงานและมันบอกฉัน:rsync -a --files-from=~/.rsync_file_list ~/destination rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]ทุกคนสามารถสอนฉันในสิ่งที่ฉันทำผิดได้หรือไม่?

ไฟล์~/.rsync_file_listนี้มีรายการชื่อไฟล์ที่นำออกใช้ล่วงหน้า~/คั่นด้วยบรรทัดใหม่ (แม้ว่าฉันจะลองทำรายการพวกเขาทั้งหมดในบรรทัดเดียวกันด้วยผลลัพธ์เดียวกัน)

ถ้าฉันใช้rsync -a ~/file ~/file2 ~/file3 ~/destinationมันใช้งานได้ดี ดังนั้นสิ่งที่ฉันหายไปเกี่ยวกับ--files-fromตัวเลือก?


ลองsed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
แอนดี้

@Andy: อนิจจาผลลัพธ์เดียวกัน
Wolf

คำตอบ:


20

ตกลงฉันพบปัญหา

  1. ไฟล์ที่มีชื่อไฟล์จะต้องมีชื่อไฟล์เท่านั้น ไม่มีเส้นทางญาติหรืออย่างอื่น;
  2. หลังจากระบุ--files-from=FILEแล้ว rsync จะต้องมีไดเรกทอรีต้นทางเพื่อค้นหาไฟล์ที่อยู่ในรายการ

rsync -a --files-from=~/.rsync_file_list $HOME/ /destinationดังนั้นคำสั่งที่ควรจะเป็น

.rsync_file_list ควรอ่าน:

file 1
file 2
file 3

3
การแก้ไข: ชื่อไฟล์ในไฟล์ที่กำหนดจะสัมพันธ์กับไดเรกทอรีต้นทาง แต่ไม่สามารถอยู่ด้านบนได้ (ไม่ใช่../) เครื่องหมายทับนำหน้าจะถูกละเว้นดังนั้นเส้นทางแบบสัมบูรณ์จะไม่ทำงาน
Wolf

ฉันเชื่อว่าคุณสามารถแก้ไขคำตอบของคุณเองและเพิ่มส่วนเพิ่มเติมที่ดีมากและข้อมูลที่เกี่ยวข้องซึ่งคุณค้นพบในภายหลังในคำตอบนั้น
Vinícius M

0

การใช้ "~" อาจไม่สามารถใช้งานได้ในไฟล์ "files-from" เว้นแต่ rsync จะฉลาดพอที่จะรับรู้และแปลสัญลักษณ์ "~"

เมื่อคุณระบุ "~" เป็นส่วนหนึ่งของคำสั่งในบรรทัดคำสั่งของเชลล์มันคือเชลล์เองที่แปลง "~" ไปยังโฮมไดเร็กทอรีของคุณก่อนส่งอาร์กิวเมนต์ไปยังโปรแกรม ดังนั้นแม้ว่าคุณพิมพ์rsync -a ~/fileสิ่งที่rsync"เห็น" rsync -a /home/foo/fileเป็นจริงเส้นทางที่ได้รับการแก้ไขหรือ

ดูการขยาย Bash Tildeสำหรับข้อมูลเพิ่มเติม

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