rsync ไม่สนใจเจ้าของกลุ่มเวลาและ perms


67

ฉันต้องการทราบวิธีใช้ rsync เพื่อซิงค์กับโฟลเดอร์แบบเรียกซ้ำ แต่ฉันต้องอัปเดตไฟล์ใหม่หรือไฟล์ที่อัปเดตเท่านั้น (เฉพาะเนื้อหาที่ไม่ใช่เจ้าของกลุ่มหรือเวลาประทับ) และฉันต้องการลบไฟล์ที่ไม่มีอยู่ในแหล่งที่มา .

คำตอบ:


93

ฉันคิดว่าคุณสามารถใช้-no-ตัวเลือกในการrsyncที่จะไม่คัดลอกกรรมสิทธิ์หรือสิทธิ์ของไฟล์ที่คุณกำลัง sync'ing

ตัดตอนมาจาก rsync Man Page

--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 ....

timestamps

สำหรับการประทับเวลาฉันไม่เห็นวิธีที่จะเก็บสิ่งนี้ไว้โดยไม่เปลี่ยนแปลงวิธีการเปรียบเทียบไฟล์ 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อาจทำสิ่งที่คุณกำลังมองหา


เมื่อใช้ - ไม่ - ครั้งฉันยังคงเห็นไฟล์จำนวนมาก (ที่มีการเปลี่ยนแปลงแบบแยกรายการ) ทำเครื่องหมายโดยใช้>f..T...ซึ่งแนะนำให้ตั้งค่าแฟล็กไฟล์และเวลาการแก้ไขบนปลายทางซึ่งเป็นสิ่งที่ฉันพยายามหลีกเลี่ยง
Michael

17

ฉันคิดว่าง่ายกว่าที่จะหลีกเลี่ยงตัวเลือก-

$ -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

และตั้งค่าเฉพาะตัวเลือกที่คุณต้องการ

หากคุณชอบตัวเลือกทั้งหมด แต่ไม่ปรับเปลี่ยนของผู้ใช้-o , กลุ่ม-g , เวลา-tและสิทธิ์-pดังนั้นคุณสามารถลบตัวเลือกทั้งสี่เหล่านี้ออกจากรายการเทียบเท่าที่เก็บถาวรได้

$ -rlD

ในการลบไฟล์ในปลายทางโปรดใช้ตัวเลือก--delete

สำหรับคำถามของคุณ: แต่ฉันคิดว่าไฟล์ทั้งหมดจะถูกตรวจสอบ - rsync ไม่สามารถถ่ายโอน / ตรวจสอบเฉพาะไฟล์ที่เปลี่ยนแปลงโดยเนื้อหาเท่านั้น


-lสำหรับลิงก์-Dอุปกรณ์ (ถือว่าเหมือนกัน--specials) ฉันคิดว่า-rอยู่คนเดียวก็เพียงพอแล้วหากเรากำลังพูดถึงเนื้อหา
sdkks

7

ฉันคิดว่าสิ่งที่คุณกำลังมองหาคือตัวเลือก

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


4

คุณสามารถบังคับ rsync ให้ละเว้นการตรวจสอบตามเวลาและขนาดของตัวดัดแปลงไฟล์และใช้วิธีตาม chksum ด้วยสวิตช์ "-c"

-c, --checksum              skip based on checksum, not mod-time & size

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

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


ฉันสงสัยว่าเป็นสิ่งที่ OP มีอยู่ในใจ ปัญหาดูเหมือนจะไม่เกี่ยวข้องกับวิธีการเลือกไฟล์ แต่คุณสมบัติที่คัดลอกมาและคำตอบที่เลือก (upvoted มากที่สุด) ครอบคลุมอยู่แล้วว่า
Julie Pelletier

-3

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

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