Rsync over ssh:“ ข้อผิดพลาด: โมดูลอ่านอย่างเดียว” ปรากฏขึ้นทันที


11

ฉันเคยใช้ rsync / ssh ในบางครั้งเพื่อสำรองเนื้อหาโฮสต์ที่แชร์ไปยัง Synology NAS ส่วนตัวของฉัน (212j สำหรับเรื่องนั้น) และมันใช้งานได้ดี สำหรับข้อมูลฉันใช้การsshเชื่อมต่อที่ไม่มีรหัสผ่าน

3 วันที่ผ่านมาฉันอัปเดตซอฟต์แวร์ NAS ของฉันและตั้งแต่ (หรืออย่างน้อยฉันเชื่อว่ามันเป็นอย่างนั้น) การสำรองข้อมูลจะไม่ทำงานอีกต่อไป ฉันได้รับข้อผิดพลาดต่อไปนี้ในโฮสต์:

rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
ERROR: module is read only 

.. ซึ่งฉันไม่เข้าใจ นอกจากนั้นไม่มีอะไรเปลี่ยนแปลงที่ฉันรู้ทั้งในต้นทางและปลายทางที่สามารถเกี่ยวข้องกับrsyncหรือsshฉันตรวจสอบบางสิ่งและดูเหมือนว่าจะไม่เป็นไร:

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

ฉันอ่านที่นี่และที่นั่นข้อผิดพลาดหมายความว่าฉันต้องให้แน่ใจว่าฉันrsyncd.confมีสิทธิ์read only = noในมัน แต่เท่าที่ฉันรู้ฉันไม่เคยใช้rsyncdเช่นเดียวกับที่ฉันไม่เคยกำหนดค่าใด ๆ สำหรับมันและจนถึงตอนนี้มันทำงานเหมือนมีเสน่ห์ .

ฉันใช้คำสั่งต่อไปนี้เพื่อสำรองข้อมูล:

rsync -ab --recursive \
--files-from="$FILES_FROM" \
--backup-dir=backup_$SUFFIX \
--delete \
--filter='protect backup_*' \
$WDIRECTORY/ \
remote_backup:$REMOTE_BACKUP/

ดังนั้นฉันจึงติดอยู่และไม่สามารถเข้าใจได้ว่าเกิดอะไรขึ้น


แก้ไข:

ตามที่แนะนำในความคิดเห็นฉันยังลองส่งคำสั่งไปยัง ssh (แต่ไม่ใช่จากในเซสชัน ssh) ที่ทำงานได้ตามที่คาดไว้และลองใช้คำสั่ง rsync เดียวซึ่งไม่ได้ผลล้มเหลวเหมือนคำสั่งสำรองที่สมบูรณ์

(sharedHost):hostuser:~ > touch test.txt
(sharedHost):hostuser:~ > rsync test.txt remote_backup:backups/test.txt
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(1034) [Receiver=3.0.8]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]

และ

(sharedHost):hostuser:~ > ssh remote_backup 'touch /abs_path_to_backups/backups/test2.txt && echo "ProoF" > /abs_path_to_backups/backups/test2.txt'
(sharedHost):hostuser:~ > ssh remote_backup 'cat /abs_path_to_backups/backups/test2.txt'
ProoF

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

ขอบคุณสำหรับคำแนะนำของคุณ ฉันแก้ไขคำถามพร้อมกับผลลัพธ์ นอกจากนี้พื้นที่เป้าหมายไม่เต็มเลย (ฉันแน่ใจแล้ว แต่ฉันตรวจสอบอีกครั้ง)
user978548

คำตอบ:


19

ฉันมีปัญหาเดียวกันหลังจากอัปเดต Synology NAS เป็น DSM 4.1 ฉันยังทำ rsync ผ่าน SSH ในสถานการณ์ของฉันโดยใช้รูตผู้ใช้ rsync @ ip ยังทำงานได้ แต่ทิ้งไฟล์ไว้บนเซิร์ฟเวอร์ด้วยเจ้าของรูทซึ่งฉันไม่ต้องการ

ฉันพบว่าในอินเทอร์เฟซผู้ใช้ NAS ของผู้ดูแลระบบว่าด้วยเหตุผลบางประการใน ControlPanel-> ผู้ใช้ -> MyRSyncUser-> แก้ไข -> "การตั้งค่าสิทธิ์" ไม่มีการเข้าถึงแบบอ่าน / เขียนที่บ้าน ปลายทาง RSYNC ของฉันอยู่ภายใต้บ้าน

การตั้งค่านี้เป็น privilidge ทำงานสำหรับฉัน ฉันหวังว่านี่จะช่วยได้.


ขอบคุณมาก ! นั่นได้ผล! ครั้งต่อไปที่ฉันอัปเดต DSM ฉันจะตรวจสอบการอนุญาตอีกครั้ง ..
user978548

8
ดูเหมือนว่าจะใช้งานได้หากฉันใช้ชื่อพา ธ แบบเต็ม (เช่นrsync something nas:/volume2/homes/foo/bar/แทนrsync something nas:bar/)
Jukka Suomela

เส้นทางแบบเต็มเป็นขั้นตอนสุดท้ายสำหรับฉันในการแก้จุดบกพร่องที่น่ารำคาญ ขอบคุณ!
joevallender

1
ปัญหาเกี่ยวกับการแก้ปัญหานี้ (ฉันไม่พบสิ่งที่ดีกว่า) คือมันให้สิทธิ์ผู้ใช้ในบ้านผู้ใช้ทั้งหมดไม่ใช่แค่ของพวกเขาเอง
CryingCyclops

ในกรณีของฉัน (ด้วยรุ่นที่ใหม่กว่าฉันถือว่า) ฉันยังต้องเปลี่ยนเป็นไวยากรณ์ตามโมดูล (ดูsuperuser.com/questions/559047// )
sknat

6

ฉันกำจัดข้อผิดพลาด: โมดูลอ่านได้โดยการเปลี่ยนเส้นทางระยะไกลจาก / var / services / homes / rsync เป็น / volume2 / homes / rsync

DSM 5.1


4

ฉันพบปัญหาเดียวกันหลังจากอัปเกรด synology ds1010 + เป็น dsm 4.1-2661

ฉันไม่มีเวลาเข้าใจสิ่งที่เกิดขึ้นกับ rsync ที่จัดทำโดย synology แต่ดูเหมือนจะไม่เป็นมาตรฐาน ดังนั้นนี่คือวิธีแก้ปัญหาของฉัน ...

ฉันไม่ต้องการแฮ็คสิทธิพิเศษ (การตั้งค่าผู้ใช้หลายคน) ดังนั้นฉันจึงคอมไพล์ rsync ใหม่อีกครั้งแบบคงที่บนแล็ปท็อปของฉันจากนั้นฉันได้โอนไบนารีในไซน์วิทยา

wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar xzvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
export CFLAGS=--static
./configure
make

scp rsync <login>@<nas_hostname>:

คุณสามารถบอก rsync ให้ใช้ไบนารีใหม่ของคุณแทนค่าเริ่มต้นด้วยพารามิเตอร์นี้:

--rsync-path=<myhome>/rsync

ตอนนี้ฉันสามารถใช้ความซ้ำซ้อนกับ rsync ได้ต่อไปโดยเพิ่มพารามิเตอร์ต่อไปนี้เป็นความซ้ำซ้อน:

--rsync-options="--rsync-path=<myhome>/rsync"

นี่คือสิ่งที่ฉันทำกับ DS212j ของฉันยกเว้นฉันใช้ ipkg เพื่อติดตั้ง rsync ใหม่ ทิศทางของ Synology สำหรับการติดตั้ง ipkg อยู่ที่นี่
Jason

ฉันไม่สามารถหาอะไรใน ipkg สำหรับ DSM 5.2 ดังนั้นสำหรับ DS215j ฉันของฉันได้ดังต่อไปนี้ในการรวบรวม (ฉันแล้วก็ข้ามคอมไพเลอร์แขนที่ไม่รู้จัก-EABI-GCC ./configure --host=armv7 CFLAGS=-static EXEEXT=-static --prefix=/opt CC=arm-unknown-linux-gnueabi-gcc && make && arm-unknown-linux-gnueabi-strip rsync && make DESTDIR=$PWD/../prefix installโกหกรอบ) ใส่ไบนารีใน / opt / bin / บน NAS นอกจากนี้ยังต้องให้เชลล์สำรองผู้ใช้ของฉันใน / etc / passwd ด้วยการเปลี่ยน / sbin / nologin เป็น / bin / sh (ควรมีตัวเลือกที่ปลอดภัยกว่า)
thomasa88

1

ฉันมีปัญหาแบบเดียวกัน แต่ฉันไม่ได้ใช้ผู้ใช้เฉพาะสำหรับ rsync

ฉันต้องแก้ไขสิทธิ์ในแผงควบคุม -> โฟลเดอร์ที่ใช้ร่วมกัน


0

ฉันมีปัญหาที่คล้ายกันในขณะที่เชื่อมต่อกับ Synology 211j มากกว่า ssh ของ Putty ฉันต้องเปิดใช้งาน

"แผงควบคุม -> สำรองข้อมูลเครือข่าย -> เปิดใช้งานบริการสำรองข้อมูลเครือข่าย"

มันใช้งานได้แล้ว


-1

ฉันได้มันทำงานโดยการเข้าสู่ระบบในฐานะที่เป็นรากแทนที่จะเป็นผู้ดูแลระบบหรือผู้ใช้ปกติ

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