トレントに使用するシードボックスアカウントを持っています。 rsync
を使用してすべてのファイルをシードボックスから14.04.1 ubuntuサーバーにダウンロードするcronジョブを設定しました。ダウンロードフォルダーはsamba共有です。以前はウィンドウを使用してコンテンツをフォルダーに整理してから、サーバーのより永続的な場所に移動しました。 14.04にアップグレードする前に、12.04を使用しましたが、すべて問題なく動作しました。
問題は、シードボックスから取得したファイルが「544」というユーザー(これはシードボックスによって生成されたユーザー名であり、8進数ではない)が所有していて、サーバー上のユーザーが削除できないことです。ダウンロードフォルダーのアクセス許可を変更した後、それらを削除できます。また、私はすべてのユーザーに、共有時にsambaフォルダーの読み取り/書き込み権限を与えました。
だから私の質問はこれです:いくつかのエレガントなコマンドを実行して、ダウンロード時にファイルのユーザー/権限をrsync
に変更させることは可能ですか?または、すべての新しいファイルがコピー/移動されたときに自動的にユーザーを変更するようにフォルダー機能を作成することは可能ですか? Sudo cronでchmod
コマンドを時々実行してファイルの所有者を変更することはできると思いますが、ダウンロードするデータの量がかなり大きくなることがあるので、すべてのファイルがダウンロードされたことを確認するために、rsync-jobとの関連でいつトリガーするかを確認します。
rsync
onlyは、-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として実行する必要があり、rootではなく通常のユーザーがファイルを所有するようにしたい場合は、--chown
オプションを使用できます。
rsync -a --chown=youruser:yourgroup ...
一部のユーザーを維持したい場合は、より複雑なマッピング用の--usermap
オプションもあります。 from:to
ペアのコンマ区切りのリストを取ります。
最後のオプションとして、あなたは明らかにcronジョブからrsync
を実行しているので、所有者/権限変更操作を&& chown ...
でcronジョブに追加することができます。
私はいくつかの方法をテストしましたが、私の場合、たとえばこのスクリプト
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
許可は、ファイルが書き込まれるパーティション/ターゲットの許可よりも大きくすることはできません。 (デバイスのマウント後にこれらの権限を確認してください)