ฉันจะสแกนไฟล์ที่มีขนาดน้อยกว่า x ได้อย่างไร


13

ฉันกำลังพัฒนาบางอย่างบนแล็ปท็อปของฉันและคัดลอกไฟล์ไปยังพีซีประสิทธิภาพสูง (เซิร์ฟเวอร์ที่ไม่มีจอภาพ) ฉันเพิ่งทำสิ่งนี้ด้วยความเกียจคร้าน (บนแล็ปท็อป):

scp -r ~/project/* server:~/project/

อย่างไรก็ตามบางไฟล์ในไดเรกทอรีโครงการเป็นไฟล์บันทึกและไฟล์ที่ฉันไม่จำเป็นต้องส่งซึ่งบางครั้งอาจเป็นกิ๊กหรือมากกว่านั้น สิ่งที่ฉันต้องการคือคำสั่ง clean ดีซึ่งโดยทั่วไปแล้วจะทำสิ่งเดียวกัน (ส่งไฟล์ทั้งหมดในโครงการและไดเรกทอรีย่อย) แต่ส่งไฟล์ภายใต้ขนาดไฟล์ที่กำหนดเช่น 100 mb ฉันมีประสบการณ์เพียงเล็กน้อยเกี่ยวกับทุบตีและไม่เลย regexp ดังนั้นฉันไม่มีความคิดใด ๆ วิธีการทำเช่นนี้โดยไม่ต้องมีวิธีการที่ซับซ้อนเช่นการนำเข้า sys เป็นงูหลามและใช้พวงของ IFS และการเปรียบเทียบ

คำตอบ:


27

คุณสามารถใช้คำสั่ง 'rsync' ซึ่งมีตัวเลือกในการควบคุมขนาดไฟล์ที่จะยกเว้น

rsync -rv --max-size=100m /path/in/local/ server:~/project/

จาก ' man rsync '

--max-size=SIZE    don't transfer any file larger than SIZE

คำตอบที่อัปเดต : เพียงไม่รวมไฟล์บันทึกด้วยตัวเลือก 'rsync' --exclude ดังต่อไปนี้

rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/

หรือคุณสามารถใช้ชุดคำสั่ง 'ค้นหา' กับ 'scp' และระบุขีด จำกัด ขนาดไฟล์ด้วย-sizeตัวเลือก ใช้! -name '*.log'เพื่อแยกไฟล์บางไฟล์ลงท้ายด้วย 'log'

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;

1
หมายเหตุสำหรับ OP: rsyncคล้ายกับscpแต่มีประสิทธิภาพมากกว่าเนื่องจากจะถ่ายโอนการเปลี่ยนแปลงเฉพาะเมื่อมีการแก้ไขไฟล์
Paddy Landau

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