Seedboxでrsync後にファイルに新しい権限を強制する

Seedboxでrsync後にファイルに新しい権限を強制する

急流に使用するSeedboxアカウントがあります。私はrsyncSeedboxのすべてのファイルを14.04.1 Ubuntuサーバーにダウンロードするためにcronジョブを設定しました。ダウンロードフォルダはSamba共有です。これは、Windowsを使用してコンテンツをサーバー上のより永続的な場所に移動する前にフォルダーとして構成していたためです。 14.04にアップグレードする前は12.04を使用していましたが、すべてが大丈夫でした。

問題は、私がシードボックスから取得したファイルを「544」(8進数ではなくシードボックスによって生成されたユーザー名)という名前のユーザーが所有しており、サーバー上のそのユーザーがそれを削除できないことです。ダウンロードフォルダの権限を変更した後、そのフォルダを削除できました。そして、Sambaフォルダを共有するとき、すべてのユーザーに読み取り/書き込み権限を与えました。

だから私の質問は:ファイルのダウンロード中にエレガントなコマンドを実行してファイルのユーザー/権限を変更できますかrsync?または、フォルダにコピー/移動するときにすべての新しいファイルが自動的にユーザーを変更するようにフォルダ機能を作成できますか?ファイル所有者を変更するためにsudo cronにコマンドを入れることができるとしますchmod。ただし、ダウンロードするデータの量が大幅に増える可能性があるため、いつ実行するのかを知ることは困難です。 rsync-jobを使用して、すべてのファイルがダウンロードされていることを確認してください。

答え1

rsync ただ要求された場合は所有者を維持してください。それ以外の場合は、他のファイルを作成するときと同様に、-oコマンドを実行しているユーザーがファイルを所有します。rsyncただし、-a含まれているので、-o多くの一般的なrsyncコマンドラインに含まれています。man rsync明らかに次の節が含まれています:

For example: if you want to use -a (--archive) but don’t want -o
(--owner),  instead  of  converting  -a  into -rlptgD, you could
specify -a --no-o (or -a --no-owner).

したがって、コマンドを実行しているユーザーにファイルを所有させるためにrsync -a source dest使用できます。rsync -a --no-o source dest

一方、ルートの場合、通常はファイル所有者のみを変更できるため、これはあまり発生しません。何らかの理由でこのタスクをrootとして実行し、root以外の一般ユーザーにファイルを所有させたい場合は、次の--chownオプションを使用できます。

rsync -a --chown=youruser:yourgroup ...

--usermap一部のユーザーを維持したい場合は、より複雑なマッピングを選択することもできます。カンマで区切られたペアのリストを使用してくださいfrom:to

最後のオプションrsyncはcronジョブで実行されているため、所有者/権限変更ジョブをcronジョブに簡単に関連付けることができます&& chown ...

答え2

私はいくつかの方法をテストしましたが、私の場合はこのスクリプトの結果を例に挙げました。

rsync -a -v --progress --modify-window=1 -c -b -i -s -m --del -vv --ignore-errors --chmod=ugo=rwx --delete --delete-excluded  --exclude='*~'  --exclude='.*' --backup-dir=.rsync_bak /home/test /media/user/usb_ext4

はい、権限はファイルを作成する必要があるパーティション/ターゲットの権限よりも広くすることはできません。 (機器のインストール後に該当する権限を確認してください)

関連情報