วิธีการป้องกัน Rsync ไม่ให้โอนไฟล์ที่ chown'ing?


72

ฉันมีการตั้งค่าการเชื่อมต่อ sshfs ด้วยระบบไฟล์ระยะไกลบนเซิร์ฟเวอร์ Linux ฉันกำลัง Rsync จากเซิร์ฟเวอร์ในพื้นที่ของฉันไปยังระบบ ftpfs-files เนื่องจากลักษณะของการตั้งค่านี้ฉันจึงไม่สามารถchownทำอะไรในระบบไฟล์ sshfs

เมื่อฉันทำ Rsync มันจะพยายามที่จะ chown ไฟล์ทั้งหมดหลังจากถ่ายโอน ซึ่งส่งผลให้เกิดข้อผิดพลาด chown แม้ว่ามันจะถ่ายโอนไฟล์ได้ดี

ด้วย Rsync มีวิธีบอกให้ไม่ลองและ chown ไฟล์หรือไม่? ถ้าฉัน rsync เช่น 1,000 ไฟล์ฉันจบลงด้วยบันทึกchown: permission denied (error 13)ข้อผิดพลาด1,000 ข้อ ฉันรู้ว่ามันไม่เจ็บอะไรเลยที่จะได้รับข้อผิดพลาดเหล่านี้เนื่องจากความเป็นเจ้าของไฟล์จะถูกกำหนดโดยการกำหนดค่า sshfs เอง แต่มันจะดีถ้าไม่ได้มา

คำตอบ:


107

คุณอาจใช้ rsync เช่นนี้:

rsync -a dir/ remote:/dir/

-aตัวเลือกตามเอกสารเทียบเท่ากับ:-rlptgoD

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

คุณอาจต้องการลบ-oและ-gตัวเลือก:

      -o, --owner                 preserve owner (super-user only)
      -g, --group                 preserve group

ดังนั้นแทนที่จะใช้คำสั่ง rsync ของคุณควรมีลักษณะดังนี้:

rsync -rlptD dir/ remote:/dir/

หรือ@glglglชี้ให้เห็น:

rsync -a --no-o --no-g dir/ remote:/dir/

ตัวเลือกที่เหลืออยู่ในการใช้งานคือ:

      -r, --recursive             recurse into directories
      -l, --links                 copy symlinks as symlinks
      -p, --perms                 preserve permissions
      -t, --times                 preserve modification times
      -D                          same as --devices --specials
          --devices               preserve device files (super-user only)
          --specials              preserve special files

19
... หรือเพียงแค่-a --no-o --no-g
glglgl

1
ฉันใช้เพียงrsync -r --no-o --no-g /source/* /dest/และเจ้าของและกลุ่มของไฟล์ที่ปลายทางยังคงมีการเปลี่ยนแปลงตามแหล่งที่มา ความคิดใด ๆ
Ram Patra


5

อย่าใช้-aตัวเลือกเนื่องจากจะมี-pตัวเลือกที่เก็บสิทธิ์ไว้ สำหรับสถานการณ์เช่นนี้-rควรจะเพียงพอ

man rsyncสำหรับข่าวสารเพิ่มเติมโปรดดูที่


4
คุณแน่ใจหรือ-pไม่ว่าฉันต้องการหลีกเลี่ยงอะไร กรรมสิทธิ์แตกต่างจากการอนุญาตใช่ไหม
Jake Wilson

0

ฉันพบบางสิ่งที่คล้ายกันโดยที่rsyncไม่ได้รักษาเจ้าของและกลุ่มของไฟล์ & ไดเรกทอรีไว้จากเซิร์ฟเวอร์ระยะไกล หากต้องการแก้ไขผมคัดลอกมากกว่า/etc/shadow, /etc/groupและ/etc/passwdไฟล์

เมื่อฉันรันrsyncคำสั่งด้านล่างมันก็ทำงานในที่มันเก็บสิทธิ์การเชื่อมโยงสัญลักษณ์และความเป็นเจ้าของ

ฉันได้ตั้งค่าคีย์ ssh เพื่อใช้รหัสผ่าน ssh

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