LoginSignup
1
1

More than 5 years have passed since last update.

rsyncの送信先パスにはシンボリックリンクを指定できないらしい

Posted at

日本語情報が皆無だったので備忘録として残しておく。

やろうとしたこと

SynologyのNASにファイルをバックアップするため、以下のようなコマンドでバックアップを試みた。
※ホスト名やディレクトリ名は変更している

rsync -aHvhzcP --no-o --no-g --chmod=a+rwx,Da+rwx \
  --exclude ".*" -e "ssh -p 51764" \
  --iconv=UTF8-MAC,UTF-8 \
  ./data-dir-01976 \
  username@example.local:/var/services/video/my-movies/ -n

data-dir-01976ディレクトリを、NAS側の/var/services/video/my-movies/ディレクトリ内にバックアップするコマンド。

問題発生

だがこれを実行したところ、このようなエラーを吐いてしまった

$ rsync -aHvhzcP --no-o --no-g --chmod=a+rwx,Da+rwx \
>   --exclude ".*" -e "ssh -p 59612" \
>   --iconv=UTF8-MAC,UTF-8 \
>   ./data-dir-01976 \
>   username@example.local:/var/services/video/my-movies/ -n
username@example.local's password: 
sending incremental file list
rsync: [sender] write error: Broken pipe (32)
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(1131) [Receiver=3.0.9]
rsync error: error in socket IO (code 10) at io.c(820) [sender=3.1.2]

NAS側のsshやrsyncはちゃんと有効にしている。実際、以前まではrsyncでバックアップできていたのだ。

原因

タイトルで既にネタバレしてしまっているが、この問題の原因は/var/services/video/my-movies/がシンボリックリンクであることが原因である。

SynologyのNASは、データボリュームへのシンボリックリンクが/var/servicesディレクトリ以下に作成される。

username@ExampleNasServer:/var/services$ ls -l
total 0
lrwxrwxrwx  1 root root 18 Aug 30 01:58 download -> /volume1/@download
lrwxrwxrwx+ 1 root root 14 Jan 14 22:05 homes -> /volume1/homes
lrwxrwxrwx+ 1 root root 14 Aug 30 02:57 music -> /volume1/music
lrwxrwxrwx+ 1 root root 18 Jan 14 21:40 NetBackup -> /volume1/NetBackup
lrwxrwxrwx  1 root root 24 Aug 30 02:36 pgsql -> /volume1/@database/pgsql
lrwxrwxrwx+ 1 root root 14 Aug 30 02:57 photo -> /volume1/photo
lrwxrwxrwx  1 root root 13 Jan 14 22:05 tmp -> /volume1/@tmp
lrwxrwxrwx+ 1 root root 14 Aug 30 02:57 video -> /volume1/video

/volume1/videoが実際のパスだが、volume1などといういかにも環境依存しそうな文字列が含まれるため、/var/services/videoに変更していた。
それが裏目に出てしまったらしい。

解決策

解決方法は至極単純である。リンク先の実体パスに変更すればいいのだ。

rsync -aHvhzcP --no-o --no-g --chmod=a+rwx,Da+rwx \
  --exclude ".*" -e "ssh -p 51764" \
  --iconv=UTF8-MAC,UTF-8 \
  ./data-dir-01976 \
  username@example.local:/volume1/video/my-movies/ -n
差分
  rsync -aHvhzcP --no-o --no-g --chmod=a+rwx,Da+rwx \
    --exclude ".*" -e "ssh -p 51764" \
    --iconv=UTF8-MAC,UTF-8 \
    ./data-dir-01976 \
-   username@example.local:/var/services/video/my-movies/ -n
+   username@example.local:/volume1/video/my-movies/ -n

参考サイト

本当に指定できないの?

少なくとも私が調べた限り、指定できるという情報は見つけられていない。
上述した質問に対する回答が無いことからも、おそらくそんな手段は存在しないのだと思う。
が、もしあるならば、コメント欄で是非教えてほしい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1