0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rsyncでwebDAV間のデータをコピー

Posted at

やりたかったこと

webDAVのデータを別のサーバに移行したい

使用する端末はMac
コピー元はCentOSサーバ(テスト環境としてSynologyのNAS)
コピー先はSynologyのNAS

準備作業

Finder->移動->サーバに接続 でwebDAVをマウントする手順でマウントを考えたが
もしかしてどちらも/Volume/davにマウントされてしまうのでは?と考えて別の方法を検討

mount_webdavコマンドでマウントすれば、スクリプトにも組み込めてオペミスを防げる

mnt $ mount_webdav -i http://192.168.1.27:5005/dav ~/mnt/dav_from
Username: hoge
Password: 
mnt $ ls ~/mnt/dav_from
test10Gfile
mnt $ mount_webdav -i http://192.168.1.10:5005/dav ~/mnt/dav_to
Username: hoge
Password: 
mnt $ ls ~/mnt/dav_to                                            
webdavtest.txt

ここは過去の自分のQiita記事を参考にした

rsyncでのコピー

$ rsync -ah --info=progress2 --dry-run ~/mnt/dav_from ~/mnt/dav_to  # ミス スラッシュを忘れている

コピー元には大きなファイル(動画)も、小さく大量のファイルもあるので、経過は表示せず進捗状況だけ表示したかった。
実行するとSyntaxエラーでprogress2が使えない
コピー元ディレクトリの後ろにスラッシュを書いていないので、コピー先にディレクトリ(dav_from)が作成されてしまった

$ rsync -ah --info=progress2 --dry-run ~/mnt/dav_from ~/mnt/dav_to
rsync: --info=progress2: unknown option

他にも「--info=progress2」なしでとりあえず実行すると実行後にこのメッセージが表示され、これもrsyncのバージョンを新しくすると解消するらしいとのLinuxでの記事がであった

WARNING: dav_from/2023data/recordings/hoge02.mp4 failed verification -- update discarded (will try again).
sent 46.70G bytes  received 3.05K bytes  18.08M bytes/sec
total size is 45.83G  speedup is 0.98

rsyncのバージョンを調べると2.6.9

 $ rsync --version
rsync  version 2.6.9  protocol version 29

brewで新しいrsyncをインストールする

$ brew install rsync

インストール先を確認

$ brew info rsync                
==> rsync: stable 3.3.0
Utility that provides fast incremental file transfer
https://rsync.samba.org/
Installed
/usr/local/Cellar/rsync/3.3.0 (12 files, 1MB) *  ## <==== ここ
  Built from source on 2024-11-28 at 16:56:09
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/r/rsync.rb
License: GPL-3.0-or-later
==> Dependencies
Build: autoconf ✔, automake ✔
Required: lz4 ✔, openssl@3 ✔, popt ✔, xxhash ✔, zstd ✔
==> Analytics
install: 2,850 (30 days), 9,136 (90 days), 47,367 (365 days)
install-on-request: 2,766 (30 days), 8,826 (90 days), 45,746 (365 days)
build-error: 6 (30 days)

バージョンを確認すると3.3.0になっている

 $ /usr/local/Cellar/rsync/3.3.0/bin/rsync --version
rsync  version 3.3.0  protocol version 31

パスを追加する シェルはzshの場合の例
(パスが「/usr/local/Cellar/rsync/3.3.0/bin」ではないのは、
一般的にはbrewでインストールされたツールは/usr/local/binにシンボリックリンクが作成されて、
/usr/local/binをパスに追加するだけでbrew管理のツール全体を利用できるようにるため。)
  ↑ これ知らなかった

mnt $ vi ~/.zshrc
export PATH="/usr/local/bin:$PATH" # <== 最後に追記
mnt $ source ~/.zshrc 

と、ここまで実行してrsyncを実行すると(コピー元のディレクトリの後ろにスラッシュを書いている)

$ rsync -ahv --info=progress2 ~/mnt/dav_from/ ~/mnt/dav_to

ざんねんなことにタイムスタンプが引き継がれていないことに気がついた。原因を調べるよりとにかくWebDAVの移行を急いでいたので、ChatGPTに対策を聞くとNFSやSMBを試すことを勧められた。
NAS側ではNFSの設定も行なってあるが、FinderでGUIでの接続時はSMBなのでそれを参考にすることができるSMBでマウントすることとした
まずはマウント

mnt $ mount_smbfs //kanri_username@192.168.1.27/dav ~/mnt/dav_from 
Password for 192.168.1.27: 
mnt $ mount_smbfs //kanri_userbname@192.168.1.10/dav ~/mnt/dav_to 
Password for 192.168.1.10: 

試しにタイムスタンプを過去のもの(2024/01/01)にしたファイルをrsyncでコピーする

mnt $ rsync -ahvt ~/mnt/dav_from/testtime.txt ~/mnt/dav_to/
sending incremental file list
testtime.txt

sent 116 bytes  received 35 bytes  302.00 bytes/sec
total size is 10  speedup is 0.07
mnt $ ls -lh dav_to                                        
total 16
-rwx------  1 tuti  staff    10B  1  1  2024 testtime.txt
-rwx------  1 tuti  staff    17B 11 12 10:44 webdavtest.txt

### 最終的なrsyncコマンド

 $ rsync -aht --info=progress2 ~/mnt/dav_from/ ~/mnt/dav_to/

やっとできました

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?