急流に使用するSeedboxアカウントがあります。私はrsync
Seedboxのすべてのファイルを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
はい、権限はファイルを作成する必要があるパーティション/ターゲットの権限よりも広くすることはできません。 (機器のインストール後に該当する権限を確認してください)