ฉันมีปัญหากับแอตทริบิวต์ของไฟล์เนื่องจากฉันเปลี่ยนระบบไฟล์ของบริษัทจาก Ubuntu 12 รุ่นเก่าเป็น Synology NAS
ฉันติดตั้งการแบ่งปัน NFS บนระบบไฟล์เก่าของฉัน จากนั้นใช้ cp ฉันคัดลอกทุกอย่าง ทุกอย่างเรียบร้อยดี แต่ฉันลืมที่จะรักษาแอตทริบิวต์ไว้ และเราสูญเสียโดยเฉพาะอย่างยิ่งวันที่ วันที่กลายเป็นวันที่คัดลอก ไม่ใช่วันที่จริง
ฉันพบคำสั่ง rsync rsync -vrt --size-only /src /dest แต่บางไฟล์ได้รับการแก้ไขตั้งแต่การคัดลอก และคำสั่งเขียนทับพวกเขา...
ตัวอย่างเช่น ฉันพยายามสร้างไฟล์บนระบบไฟล์เก่า คัดลอกบน synology ใหม่ จากนั้นแก้ไขไฟล์บน synology เมื่อฉันใช้ rsync ไฟล์จะถูกลบและแทนที่ด้วยเวอร์ชันเก่า
ฉันกำลังมองหาคำสั่งเพื่อคัดลอกการประทับเวลาสำหรับไฟล์เฉพาะเมื่อไฟล์มีขนาดเท่ากันเท่านั้น (ยังไม่ได้แก้ไข)
ไม่ว่าจะใช้เวลานาน
แก้ไข :
ฉันลองใช้วิธีแก้ปัญหาที่เสนอด้วยไดเร็กทอรีทดสอบ ไม่มีข้อผิดพลาด แต่ไม่มีการเปลี่ยนแปลงใดๆ:
old_base=/home/samba/shares/projects/test
new_base=/mnt/NAS
cp $old_base $new_base -rv
`/home/samba/shares/projects/test/1201.txt' -> `/mnt/NAS/test/1201.txt'
`/home/samba/shares/projects/test/test.txt' -> `/mnt/NAS/test/test.txt'
`/home/samba/shares/projects/test/1200.txt' -> `/mnt/NAS/test/1200.txt'
`/home/samba/shares/projects/test/1202/1202.txt' -> `/mnt/NAS/test/1202/1202.txt'
ตอนนี้ฐานใหม่ของฉันเหมือนกันกับฐานเก่า แต่ไม่มีการประทับเวลาเหมือนความเป็นจริง
ฉันแก้ไขไฟล์หนึ่งไฟล์ เพิ่มเนื้อหาเพื่อจำลองไฟล์ที่แก้ไขเนื่องจากฉันคัดลอกทุกอย่าง
จากนั้นฉันก็ใช้วิธีแก้ปัญหาของคุณ:
root@xx:/mnt/NAS/test# cd $old_base; หา . -ประเภท f | xargs ls -s | sort -k 2,2 >/tmp/old
root@xx:/home/samba/shares/projects/test# cd $new_base; หา . -ประเภท f | xargs ls -s | sort -k 2,2 >/tmp/new
root@xx:/mnt/NAS# comm -12 /tmp/old /tmp/new | ในขณะที่อ่านชื่อไฟล์ขนาด สัมผัส ${new_base}/${filename} -r ${old_base}/${filename}; เสร็จแล้ว
comm: ไฟล์ 2 ไม่เรียงลำดับ
comm: ไฟล์ 1 ไม่เรียงลำดับ
ฉันไม่มีข้อผิดพลาด แต่ไม่มีการเปลี่ยนแปลงใดๆ
(ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย ${filename} แต่ฉันก็พยายามแทนที่ด้วย ${new_base}/*
แก้ไข : 22/07
ฉันไม่มีผลลัพธ์ใด ๆ เมื่อฉันใช้
comm -12 --nocheck-order /tmp/old /tmp/new