ฉันต้องการทราบวิธีใช้ rsync เพื่อซิงค์กับโฟลเดอร์แบบเรียกซ้ำ แต่ฉันต้องอัปเดตไฟล์ใหม่หรือไฟล์ที่อัปเดตเท่านั้น (เฉพาะเนื้อหาที่ไม่ใช่เจ้าของกลุ่มหรือเวลาประทับ) และฉันต้องการลบไฟล์ที่ไม่มีอยู่ในแหล่งที่มา .
ฉันต้องการทราบวิธีใช้ rsync เพื่อซิงค์กับโฟลเดอร์แบบเรียกซ้ำ แต่ฉันต้องอัปเดตไฟล์ใหม่หรือไฟล์ที่อัปเดตเท่านั้น (เฉพาะเนื้อหาที่ไม่ใช่เจ้าของกลุ่มหรือเวลาประทับ) และฉันต้องการลบไฟล์ที่ไม่มีอยู่ในแหล่งที่มา .
คำตอบ:
ฉันคิดว่าคุณสามารถใช้-no-
ตัวเลือกในการrsync
ที่จะไม่คัดลอกกรรมสิทธิ์หรือสิทธิ์ของไฟล์ที่คุณกำลัง sync'ing
--no-OPTION
You may turn off one or more implied options by prefixing the option
name with "no-". Not all options may be pre‐fixed with a "no-":
only options that are implied by other options (e.g. --no-D,
--no-perms) or have different defaults in various circumstances (e.g.
--no-whole-file, --no-blocking-io, --no-dirs). You may specify
either the short or the long option name after the "no-" prefix (e.g.
--no-R is the same as --no-relative).
For example: if you want to use -a (--archive) but don’t want -o
(--owner), instead of converting -a into -rlptgD, you could specify
-a --no-o (or -a --no-owner).
The order of the options is important: if you specify --no-r -a, the
-r option would end up being turned on, the opposite of -a
--no-r. Note also that the side-effects of the --files-from
option are NOT positional, as it affects the default state of several
options and slightly changes the meaning of -a (see the --files-from
option for more details).
มองผ่านหน้าคนฉันเชื่อว่าคุณต้องการใช้สิ่งนี้:
$ rsync -avz --no-perms --no-owner --no-group ...
หากต้องการลบไฟล์ที่ไม่มีอยู่คุณสามารถใช้--delete
สวิตช์ได้:
$ rsync -avz --no-perms --no-owner --no-group --delete ....
สำหรับการประทับเวลาฉันไม่เห็นวิธีที่จะเก็บสิ่งนี้ไว้โดยไม่เปลี่ยนแปลงวิธีการเปรียบเทียบไฟล์ SOURCE กับ DEST คุณอาจต้องการบอกrsync
ให้ละเว้นการประทับเวลาโดยใช้สวิตช์นี้:
-I, --ignore-times
Normally rsync will skip any files that are already the same size
and have the same modification timestamp. This option turns off this
"quick check" behavior, causing all files to be updated.
สำหรับการประทับเวลา--no-times
อาจทำสิ่งที่คุณกำลังมองหา
ฉันคิดว่าง่ายกว่าที่จะหลีกเลี่ยงตัวเลือก-
$ -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
และตั้งค่าเฉพาะตัวเลือกที่คุณต้องการ
หากคุณชอบตัวเลือกทั้งหมด แต่ไม่ปรับเปลี่ยนของผู้ใช้-o , กลุ่ม-g , เวลา-tและสิทธิ์-pดังนั้นคุณสามารถลบตัวเลือกทั้งสี่เหล่านี้ออกจากรายการเทียบเท่าที่เก็บถาวรได้
$ -rlD
ในการลบไฟล์ในปลายทางโปรดใช้ตัวเลือก--delete
สำหรับคำถามของคุณ: แต่ฉันคิดว่าไฟล์ทั้งหมดจะถูกตรวจสอบ - rsync ไม่สามารถถ่ายโอน / ตรวจสอบเฉพาะไฟล์ที่เปลี่ยนแปลงโดยเนื้อหาเท่านั้น
-l
สำหรับลิงก์-D
อุปกรณ์ (ถือว่าเหมือนกัน--specials
) ฉันคิดว่า-r
อยู่คนเดียวก็เพียงพอแล้วหากเรากำลังพูดถึงเนื้อหา
ฉันคิดว่าสิ่งที่คุณกำลังมองหาคือตัวเลือก
rsync -r --size-only
จากหน้าคน:
--size-only
This modifies rsync’s "quick check" algorithm for finding files that need to be transferred,
changing it from the default of transferring files with either a changed size or a changed
last-modified time to just looking for files that have changed in size. This is useful when
starting to use rsync after using another mirroring system which may not preserve timestamps
exactly.
หากคุณต้องการลบไฟล์ที่หายไปในแหล่งข้อมูลที่ใช้ --delete
คุณสามารถบังคับ rsync ให้ละเว้นการตรวจสอบตามเวลาและขนาดของตัวดัดแปลงไฟล์และใช้วิธีตาม chksum ด้วยสวิตช์ "-c"
-c, --checksum skip based on checksum, not mod-time & size
นี่หมายความว่าจำเป็นต้องเปรียบเทียบไฟล์ทั้งหมดในกลุ่ม (และถ่ายโอนข้อมูลเมตาที่เกี่ยวข้องไปมาระหว่างต้นทางและปลายทางเพื่อให้เกิดเหตุการณ์นี้) โดยไม่คำนึงว่าไฟล์และขนาดตรงกันหรือไม่ แต่จะถ่ายโอนชิ้นที่แตกต่างกัน ระหว่างต้นทางและปลายทาง
การใช้สวิตช์นี้ร่วมกับสวิตช์อื่น ๆ ที่แนะนำโดยผู้อื่นควร จำกัด สิ่งที่คัดลอก (คัดลอกเฉพาะสิ่งที่มีการเปลี่ยนแปลง) และมีประโยชน์ในการตรวจสอบความสอดคล้องระหว่างต้นทางและปลายทาง แต่จะใช้เวลานานขึ้นกับความเร็วลิงก์ของคุณ มันต้อง chksum ไฟล์ chunks ทั้งสองด้านและเปรียบเทียบ)
คำสั่งด้านล่างจะทำงานได้อย่างสมบูรณ์แบบฉันทดสอบสำหรับความต้องการของตัวเองมันจะใช้เวลาเฉพาะการเปลี่ยนแปลงเนื้อหา
rsync -acvzh source/ destination/
>f..T...
ซึ่งแนะนำให้ตั้งค่าแฟล็กไฟล์และเวลาการแก้ไขบนปลายทางซึ่งเป็นสิ่งที่ฉันพยายามหลีกเลี่ยง