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

## やりたかったこと
### 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記事](https://qiita.com/taro373/items/4dcfd1c13510a1161bb9)を参考にした

## 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での記事](https://blog.mylab.jp/posts/2008112101/)がであった
```
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/
```
やっとできました