web-dev-qa-db-ja.com

WindowsでのRsyncおよびCygwinベースのバックアップにより、アクセス権拒否エラーが発生する

背景

Windows 10でrsync/cygwinを使用して、すべてのローカルファイル(ソース)を外部ハードドライブ(宛先)にバックアップします。私はこのガイドを使用しました http://www.howtogeek.com/175008/the-non-beginners-guide-to-syncing-data-with-rsync/ rsync /の使用方法のチュートリアルとしてバックアップ用のcygwin。注:外付けハードドライブはNTFSでフォーマットされています。

最初のバックアップで、目的のフォルダを宛先に手動でコピー/貼り付けました。以降で説明するように、以降のバックアップはすべてrsyncを使用して行われます。

rsync/cygwinを使用した私のバックアップ方法

Windowsでは、rsyncコマンドを使用してbackup.batファイルを作成したため、外部ドライブをすばやく接続してバックアップを開始できます。以下は、backup.batファイルの例です。Cはローカルドライブ、Eは外部ドライブです。

pause
rsync -avhP --delete --log-file="/cygdrive/C/Users/MyUsername/rsync-backup-log.txt" "/cygdrive/C/Users/MyUsername/Folder A" "/cygdrive/E/Backup/"
rsync -avhP --delete --log-file="/cygdrive/C/Users/MyUsername/rsync-backup-log.txt" "/cygdrive/C/Users/MyUsername/Folder B" "/cygdrive/E/Backup/"
rsync -avhP --delete --log-file="/cygdrive/C/Users/MyUsername/rsync-backup-log.txt" "/cygdrive/C/Users/MyUsername/Folder C" "/cygdrive/E/Backup/"
pause

権限の問題がないことを確認するために、C:\ cygwin64\etc\fstabファイルを以下のように編集しました。

none /cygdrive cygdrive binary,posix=0,user,noacl 0 0

問題/問題

私が抱えている問題は、 "Permission denied(13)"エラーがよく表示されることです。以下は、rsyncログの抜粋です。一部のファイル/フォルダーがエラーなしでバックアップされることに注意してください。ただし、アクセス許可エラーが発生するファイル/フォルダーがいくつかあります。

...
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5678.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5679.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5680.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5681.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5682.JPG
2016/12/17 15:57:04 [2968] >f+++++++++ Documents/Subfolder A/IMG_5996.JPG
...
2016/12/17 15:58:03 [6052] >f+++++++++ Folder B/Subfolder C/FileD.docx
2016/12/17 15:58:03 [6052] cd+++++++++ Folder B/Subfolder C/Subfolder E/
2016/12/17 15:58:04 [6052] >f+++++++++ Folder B/Subfolder F/FileG.docx
2016/12/17 15:58:04 [6052] rsync: mkstemp "/cygdrive/E/Backup/Folder B/Subfolder C/.FileD.docx.dBBzQZ" failed: Permission denied (13)
2016/12/17 15:58:07 [6052] rsync: mkstemp "/cygdrive/E/Backup/Folder B/Subfolder F/.FileG.docx.8DkCUR" failed: Permission denied (13)
2016/12/17 15:58:07 [6052] rsync: recv_generator: mkdir "/cygdrive/E/Backup/Folder B/Subfolder H/Subfolder J" failed: Permission denied (13)
2016/12/17 15:58:07 [6052] *** Skipping any contents from this failed directory ***
2016/12/17 15:58:07 [6052] >f+++++++++ Folder B/Subfolder H/FileK.xlsx
2016/12/17 15:58:07 [6052] cd+++++++++ Folder B/Subfolder H/Subfolder J/
2016/12/17 15:58:07 [6052] rsync: mkstemp "/cygdrive/E/Backup/Folder B/Subfolder H/.FileK.xlsx.WQa396" failed: Permission denied (13)
2016/12/17 15:58:07 [6052] sent 91.52M bytes  received 1.79K bytes  9.63M bytes/sec
...

トラブルシューティング

トラブルシューティングを行うために、Windowsエクスプローラー(外部ハードドライブ上)でアクセス許可エラーのあるフォルダーの1つに移動しました。以下は、私が受け取るダイアログ通知のスクリーンショットです。 [続行]をクリックしてアクセス許可を取得すると、フォルダーは開きますが空です。 rsyncコマンド(backup.bat)を再実行すると、そのフォルダー内のファイルはエラーなしで適切にバックアップされます。

スクリーンショット:

enter image description here

5
Zythyr

私は現在、自分に合った解決策を見つけることができました。これが保証された正しいアプローチであるかどうかはわかりません。

権限の問題を回避するために、rsyncコマンドに以下を追加する必要があります:--no-p --chmod=ugo=rwX。したがって、rsync backupコマンドは次のようになります。

rsync -avhP --no-p --chmod=ugo=rwX --delete --log-file="/cygdrive/C/Users/MyUsername/rsync-backup-log.txt" "/cygdrive/C/Users/MyUsername/Folder A" "/cygdrive/E/Backup/"

このソリューションの功績は、同様の投稿の次の回答にあります: https://superuser.com/a/69764/607501

2
Zythyr

すでに示したように、--no-p--chmod=ugo=rwXとともに使用すると、すべての許可ビットが設定されます。

ただし、新しいディレクトリのアクセス許可をより細かく制御したい場合は、--chmod=に他の引数を使用できます。

リンクしたガイドには実際にこの例があります(使用後に追加された可能性があります):--chmod=Du=rwx,Dgo=rx,Fu=rw

man rsyncには、このオプションに関する多くの情報が含まれています。

2
Robert

参考までに:OpenSSHとrsyncのCygwinバージョンのパッケージを作成しました。

https://github.com/Bill-Stewart/CygSSH

インストールすると、noaclオプションがデフォルトでfstabファイルに設定され、Cygwinプログラム(rsyncを含む)がファイルのアクセス許可を変更しないようにします。

転送中にデータが暗号化されるように、rsyncレプリケーションにはSSHをお勧めします。

0
Bill_Stewart