Windows Subsystem for Linuxの「rsync」コマンドでバックアップをする
Windows Subsystem for LinuxでLinuxのコマンドを利用できるので、Googleフォトにある画像ファイルをローカルのディスクとネットワークドライブとして使用しているNASに「rsync」でバックアップする事にしてみました。シェルスクリプトも使えるのでバックアップも簡単になります。
※Windows Subsystem for Linuxでは「Ubuntu」を利用しています
バックアップスクリプトを作るのにいくつかの問題点がでてきました。これば「Windows Subsystem for Linux」の仕様の関係と思いますが、まずは「Google ドライブ」のあるディレクトリがLinuxからのパス「 /mnt/c/Users/(ユーザ名)/Google ドライブ」となりますが、コマンドラインだと問題なく利用できますが、シェルスクリプトだとエラーになります。空白を¥でエスケープしても駄目でした
もう一個が、NASですが私はPlayStation機器のnasneを利用しています。このNASですがログイン時にユーザーログインが必要でその関係でLinuxからマウントできません
Windows Subsystem for Linuxで空白を含む日本語フォルダを取り扱う
Windows Subsystem for Linuxで「Google ドライブ」のような、日本語でしかも空白があるフォルダのアクセスですが、通常であれば「/mnt/c/Users/(ユーザ名)/Google\ ドライブ」で使用できますがシェルスクリプトだと「failed: No such file or directory」エラーになります。
# vim rsync.sh SRC01="/mnt/c/Users/test/Google\ ドライブ/Google\ フォト/" DECT01="/mnt/e/backup/Google フォト/" rsync -avz --delete $SRC01 $DECT01 # sh rsync.sh sending incremental file list rsync: link_stat "/mnt/d/Users/test/Google\" failed: No such file or directory (2) rsync: change_dir "/mnt/e/backup/Google\" failed: No such file or directory (2)
解決策ですが、シンボリックリンクを作って対応しました。
# ln -s /mnt/c/Users/test/Google\ ドライブ/Google\ フォト/ /mnt/c/Users/test/script/Photo
Windows Subsystem for Linuxでネットワークドライブをマウントする
Windows Subsystem for Linuxでネットワークドライブをマウントするには「mount -t drvfs Z: /mnt/share」のようなコマンドでマウントできます。事前にネットワークドライブとしてZドライブにネットワークドライブを割当する必要があります。
ネットワークドライブに割り当するには、対象のネットワークドライブのフォルダを右クリックして「ネットワークドライブの割り当て」を選択します
割り当てするドライブを選択して、「サインイン時に再接続する」のオプションにチェックして「完了」をクリックします
ネットワークドライブの割り当てが終わりましたら、Windows Subsystem for Linuxで実際にマウントします。マウントする前に「 /mnt/share」を作成しておく必要があるのでmkdirコマンドで作成してからマウントして「df」コマンドでマウントしてるか確認したのが下記です
# mkdir /mnt/share # mount -t drvfs Z: /mnt/share # df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 311939044 196387488 115551556 63% / root 311939044 196387488 115551556 63% /root home 311939044 196387488 115551556 63% /home data 311939044 196387488 115551556 63% /data cache 311939044 196387488 115551556 63% /cache mnt 311939044 196387488 115551556 63% /mnt none 311939044 196387488 115551556 63% /dev none 311939044 196387488 115551556 63% /run none 311939044 196387488 115551556 63% /run/lock none 311939044 196387488 115551556 63% /run/shm none 311939044 196387488 115551556 63% /run/user C: 311939044 196387488 115551556 63% /mnt/c D: 976759804 159047752 817712052 17% /mnt/d E: 2930265084 426871852 2503393232 15% /mnt/e Z: 974974548 252266716 722707832 26% /mnt/share
Windows Subsystem for Linuxでrsyncを利用したシェルスクリプト
使用される環境でディレクトリが異なりますが、私の場合は以下のようなシェルスクリプトを作りました。
ネットワークドライブですが削除ができたり出来なかったりして不安定ですが一様rsyncコマンドは走ってコピーはしているようです
#!/bin/bash mount -t drvfs Z: /mnt/share #「Google ドライブ」フォルダの空白が取り扱えないのでシンボリックリンクで対応 SRC11="/mnt/c/Users/test/script/Photo/" DECT11="/mnt/e/01_Backup/Google_Photo/" DECT12="/mnt/share/PHOTO/" rsync -avz --delete $SRC11 $DECT11 rsync -avz --delete $SRC11 $DECT12
ディスカッション
コメント一覧
まだ、コメントがありません