รักษา symlink ปลายทางที่มีอยู่ด้วย rsync


10

ฉันใช้rsync (1)เพื่ออัปเดตที่เก็บ debian ท้องถิ่น เมื่อเร็ว ๆ นี้ดิสก์ที่ฉันใช้เพื่อเก็บมันเริ่มมีพื้นที่เหลือน้อยดังนั้นฉันจึงตัดสินใจใช้ symlinks เพื่อให้ฉันย้ายบางไดเรกทอรีไปยังดิสก์ขนาดใกล้เคียงกัน

น่าเสียดายที่ดูเหมือนว่า rsync กำลังลบ symlink และเติมดิสก์เกือบเต็ม หลังจากการค้นหาบางอย่างฉันค้นพบ--keep-dirlinksตัวเลือกในการ rsync ซึ่งดูเหมือนจะปรับแต่งเพื่อแก้ไขปัญหาของฉัน

ไม่เพียงเท่านั้น symlink บนเป้าหมายยังคงถูกลบอยู่
นี่คือคำสั่ง rsync ของฉัน:

rsync --recursive --keep-dirlinks --links --hard-links --times --verbose \
 --delete --delete-excluded $EXCLUDE $SOURCE_EXCLUDE \
 $RSYNC_HOST::$RSYNC_DIR/pool/ $TO/pool/

--exclude binary-alpha/ --exclude disks-alpha ...ไม่รวมขยายออกไปกำจัดจำนวนมากของสถาปัตยกรรมที่ฉันไม่ได้สนใจในตามสายของ ก่อนที่ rsync จะเปิดตัวไดเรกทอรีพูลของฉันจะเป็นดังนี้:

lrwxrwxrwx  1 root root   23 2014-09-22 13:58 contrib -> /u2/debian/pool/contrib
drwxrwxr-x 62 root root 4096 2012-04-09 03:02 main
lrwxrwxrwx  1 root root   24 2014-09-22 13:58 non-free -> /u2/debian/pool/non-free

เมื่อ rsync เริ่มทำงานฉันได้รับสิ่งนี้:

receiving incremental file list
deleting non-free
deleting contrib
./
contrib/
contrib/a/

และอื่น ๆ และ symlink จะถูกแทนที่ด้วยไดเรกทอรีที่เต็มไปด้วยไฟล์

ตัวเลือก rsync อื่น ๆ รบกวน--keep-dirlinksบ้างหรือไม่? ฉันไม่สามารถรวมรายการใดได้บ้าง หรือว่าเป็นตัวเลือกที่ทำให้เกิดปัญหาของฉัน

คำตอบ:


7

--deleteและ--delete-excludedตัวเลือกการยุ่งเกี่ยวกับแผนของคุณเช่นที่พวกเขาสังเกตเห็นว่า symlink ไม่ได้มีแหล่งที่มาและทำให้ลบ

สิ่งนี้จะเกิดขึ้นเมื่อคุณบอกrsyncให้คัดลอกไดเรกทอรีทั้งหมดด้วยsource/ targetเครื่องหมาย (เครื่องหมายสแลชต่อท้ายหลังแหล่งที่มา) หากคุณใช้source/* targetแทนเชลล์จะขยายรายการไฟล์และไดเรกทอรีเพื่อคัดลอกและสิ่งนี้จะไม่เกิดขึ้น (แต่ลอง--dry-runก่อน)

อย่างไรก็ตามแทนที่จะตั้งค่าที่เปราะบางนี้ฉันขอแนะนำให้รวมทั้งสองดิสก์เข้ากับความช่วยเหลือของ LVM เพื่อสร้างไดรฟ์ข้อมูลขนาดใหญ่หนึ่งที่ไม่ต้องการกลอุบายชนิดนี้


ขอบคุณ! ฉันได้เปลี่ยนสคริปต์และดูเหมือนว่าจะใช้งานได้ นี่จะทำให้ฉันมีเวลาเล็กน้อย - ดิสก์ยังคงมีแนวโน้มที่จะเติม แต่ฉันมีเวลาที่จะเปลี่ยนสิ่งต่าง ๆ คุณถูกต้องเกี่ยวกับการรวมสองอย่างเข้ากับ LVM ฉันได้รับการพิจารณาแล้ว แต่การลากเท้าของฉันเพราะมันหมายถึงการย้ายสิ่งต่าง ๆ ออกแล้วย้ายพวกเขากลับมา ดีกว่าเร็วกว่านั้นแม้ว่าฉันเดา
unkilbeeg

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

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