scp -r … แต่ไม่ออก (ยกเว้น) ไดเรกทอรีย่อยที่ระบุ


29

นี่คือโครงสร้างไดเรกทอรี:

/a/
/a/b/
/a/c/

ฉันต้องการคัดลอกทุกอย่างยกเว้นสำหรับ / a / c / ไดเรกทอรีย่อย

scp -rp myserver:/a .      # this will copy everything

ถาม: ฉันจะระบุไดเรกทอรีที่จะลาออกในคำสั่ง scp ได้อย่างไร


3
แรงจูงใจดั้งเดิมคือไดเรกทอรีย่อย "/ a / c /" มีขนาดใหญ่มาก (กิกะไบต์) ดังนั้นการลบทิ้งจะลดการคัดลอกจากนาทีเป็นวินาที
russian_spy

คำตอบ:



5

ฉันคิดว่านี่อาจเป็นวิธีที่ถูกต้องในการทำเช่นนั้นคุณยังใช้ SSH อยู่ฉันไม่พบวิธีที่จะใช้ scp - แต่การใช้ rsync บน ssh อาจแก้ไขได้

rsync -e 'ssh -ax' -av --exclude /a/c myserver:/a .

ถ้าคุณใช้สวิตช์ -n มันจะสร้างกระบวนการแบบแห้ง:

 rsync -e 'ssh -ax' -av --exclude /a/c -n myserver:/a .

นอกจากนี้ยังพยายาม:-rz -e "ssh -i private.pem" -rz 'users@server:/full/path/'
mbrownnyc

1

คุณสามารถใช้การขยายแบบวงกลมได้ดังตัวอย่างด้านล่าง:

#Enable extglob
shopt -s extglob

cp -rv !(./excludeme/*.jpg) /var/destination

0

ไม่ใช่วิธีที่สมบูรณ์แบบที่จะทำ แต่ตั้งค่าไดเรกทอรีย่อยที่คุณต้องการแยกเป็นแบบอ่านอย่างเดียว chmod -R 444 /a/cควรทำเคล็ดลับ คุณจะได้รับข้อผิดพลาด "สิทธิ์ถูกปฏิเสธ" เมื่อพยายามเขียนทับไดเรกทอรีนั้น

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