リモートマシンのファイルをネットワークドライブにドロップするマシンに同期するrsyncサービスがあります。
コピー先のフォルダーのネイティブのアクセス許可を取得するには、コピーしたファイルが必要です。
同期プロセスは正常に実行されますが、完了後、一部のフォルダーにアクセスできません-アクセス許可が拒否されました。
ドメイン管理者としてログインしています。また、上記のフォルダに対するアクセス許可を変更することもできません。何ができますか?
コマンドを実行:
rsync.exe -v -rlt -z --delete "src_path" "dst_path"
(- http://www.samba.org/ftp/rsync/rsync.html から)
要約すると、宛先ファイル(新旧両方)にソース権限を付与するには、--perms
を使用します。
(既存のファイルを変更せずに)新しいファイルに宛先デフォルトの許可を与えるには、--perms
オプションがオフであることを確認し、--chmod=ugo=rwX
を使用します(これにより、すべての非マスクビットが確実に有効になります)。
この後者の動作を入力しやすくしたい場合は、この行をファイル〜/ .poptに入れるなど、poptエイリアスを定義できます(以下は-Zオプションを定義し、-no-を含めます) g宛先ディレクトリのデフォルトグループを使用するには):
rsync alias -Z --no-p --no-g --chmod=ugo=rwX
Cygwinの「posix」セキュリティは、rsyncで--no-perms
を使用する場合でも、Windows NTFSファイルのアクセス許可で多くの問題を引き起こしています。
新しく作成されたファイル/フォルダーはデフォルトのアクセス許可を適切に継承しないことがわかりましたが、すべてのファイル/フォルダーはWindowsファイル/フォルダーの[高度なセキュリティ]タブに多数の<not inherited>
エントリを持っています。 (そして、この問題はrsync関連だけではありません)。
この 関連する投稿 と このリンク は、cygwinの/etc/fstab
ファイルのnoacl
オプションを使用してこれらの問題を解決する方法に非常に役立ちました。このソリューションの欠点は、cygwinがファイル/フォルダーの権限を設定する機能を失うことですが、多くの場合、これは重要ではありません。
(このトピックをグーグルで検索すると、おそらくCYGWIN = NONTSEC環境変数の設定への参照が見つかりますが、これはcygwin v1.5用であり、cygwin v1.7以降では機能しません。)
WindowsでDeltaCopyを使用すると、次のように機能させることができます。
rsync --perms --chmod=a=rw,Da+x ...
--recursive
でも機能しました
最高評価の回答が機能するのは、WindowsでSSHを介してrsyncを使用している場合のみです。 cygwin rsyncデーモンを使用している場合、/ etc/fstabでnoaclを使用するだけでは効果がありません。何らかの理由で、ユーザーを削除してnoacl、overrideなどを試しても、継承を尊重しません。これは発生するようですトップレベルのドライブにrsyncしていて、/ etc/rsyncd.confでpath =/cygdrive/whateverを使用する場合。代わりに、別のマウントポイントを/ etc/fstabに作成し、代わりにrsyncd.confで使用する必要があります。
D:\ /d_drive ntfs binary,posix=0,noacl,user,override 0 0
/etc/rsyncd.confには、次のようなものがあります。
use chroot = yes
[d_drive]
path = /d_drive
comment = d_drive
auth users = someUser
secrets file = /etc/rsyncd.secrets
read only = false
write only = false
list = false
uid = someUser
次に、Windowsシステムを再起動しなければなりませんでした。rsyncサービスを再起動するだけでは効果がないようで、chrootおよびchdirエラーがスローされ続けました(/ d_driveがマウントされ、chroot = falseを使用して、それに書き込むことができました)。次に、Windowsシステムにrsyncを使用するときに、次を使用します。
cd /local/path/to/copy
rsync -rltD --no-p --no-g --no-o ./ rsync://someUser@localhost:remotePort/d_drive/
rsync、少なくともCygwinでは次のスイッチがあります。
-A、-aclsはACLを保持します(--permsを意味します)
私のCygwinバージョンは次のとおりです。
CYGWIN_NT-6.3 1.7.29(0.272/5/3)2014-04-07 13:46 x86_64 Cygwin
お役に立てれば!
過去に、昇格したコマンドでtakeown
を使用して、Windowsのアクセス許可を現在のユーザーに再割り当てしました。
takeown /f <NameOfFolder> /r /d Y
もちろん、最初に正しいrsync
フラグを使用した場合は不要ですが、すでにコピーしたファイルに対してrsync
を再実行したくない場合は、これをお勧めします。
バックアップにrsyncを使用するrsnapshot
でこの問題が発生しました。 --relative
からrsync_long_args
を削除してオーバーライドしました。その後、奇妙な権限を持つディスク自体のフォルダc
は作成されません。