ค้นหาและ rsync?


24

ฉันต้องการที่จะสามารถค้นหาไฟล์ในช่วง 14 วันและนานกว่า 10k และกว่า rsync ที่พบไฟล์ไปยังปลายทาง

มีวิธีรวมคำสั่งทั้งสองนี้หรือไม่?

find ./ -mtime +14 -size +10k 
rsync --remove-sent-files -avz /src /dest

คำตอบ:


33

คุณสามารถส่งผลลัพธ์การค้นหาลงใน rsync โดยใช้หนึ่งในตัวเลือกที่ระบุไว้ด้านล่าง

วิธีที่ # 1

ตัวเลือกทั้งสองนี้มีความคล้ายคลึงกันมากพวกเขาทั้งสองคิดว่าคุณกำลังเปลี่ยนไดเรกทอรีไปยังบางตำแหน่งแล้วเรียกใช้findคำสั่งจากที่นั่น

$ rsync -avz --remove-sent-files \
        --files-from=<(find ./ -mtime +14 -size +10k) ./ /dest

คุณยังสามารถใช้ไปป์เพื่อป้อนรายการใน:

$ find ./ -mtime +14 -size +10k -print0 \
        | rsync -av --files-from=- --from0 ./ /dest

วิธีที่ # 2

วิธีนี้สามารถเรียกใช้ได้จากทุกที่

$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
        | rsync --files-from=- --from0 /src/dir/ /dst/dir/
  • printf %P: ชื่อไฟล์ที่มีชื่อของอาร์กิวเมนต์บรรทัดคำสั่งที่พบไฟล์นั้น ด้วยวิธีนี้คุณสามารถใช้ไดเรกทอรี src ใด ๆ ไม่จำเป็นต้อง cd ลงในไดเรกทอรี src ของคุณก่อน

อ้างอิง

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