source
フォルダをフォルダと同期さdestination
せ、フォルダ内のすべての変更をターゲットsource
に反映したいと思います。
この場合、次のようにrsyncコマンドを使用します。
rsync -av --progress --delete "/source/" "/destination"
/を使用してコンテンツを指定するにはソースを表示し、ターゲットを表示するには/を使用しないでください。
ソースの修正時間が最新の場合は、その-u
オプションを使用してターゲットを更新する必要がありますか?それとも-av
それで十分ですか?
-i
このオプションが必要ですか?ありがとうございます!
-u、--updateこれは、rsyncがターゲットに存在し、ソースファイルよりも変更時間が最新のすべてのファイルをスキップします。 (既存のファイルの変更時間がソースファイルの変更時間と同じでサイズが異なる場合は更新されます。)これは、シンボリックリンクやその他の特殊ファイルのコピーには影響しません。さらに、送信者と受信者の間のファイル形式の違いは、オブジェクトの日付に関係なく常に更新されるほど重要であると見なされます。つまり、ソースにディレクトリがあり、ターゲットにファイルがある場合、タイムスタンプに関係なく転送が行われます。このオプションは除外ではなく転送ルールなので、ファイルのリストに入るデータと削除には影響しません。単に受信者が転送を要求するファイルを制限します。
--deleteこれはrsyncに、受信側から不要なファイル(送信側にないファイル)を削除するように指示しますが、同期されているディレクトリからのみ削除します。ディレクトリの内容( "dir / *"など)にワイルドカードを使用せずにディレクトリ全体( "dir"または "dir /"など)を送信するようにrsyncに要求する必要があります。ワイルドカードはシェルによって拡張されるため、rsyncはファイルの親ディレクトリではなく単一のファイルを転送するように要求されます。 --delete-excludedオプションを使用するか、転送側でのみ一致するようにルールを表示しない限り、転送から除外されたファイルは削除されません(フィルタリングルールセクションの包含/除外修飾子を参照)。 rsync 2.6.7より前では、--recursiveが有効になっていない限り、このオプションは効果がありませんでした。 2.6.7以降、--dirs(-d)が有効な場合でも削除が発生しますが、内容がコピーされるディレクトリにのみ削除が発生します。このオプションは誤って使用すると危険です。 --dry-runオプション(-n)を使用して最初に実行しようとして削除するファイルを確認するのはとても良い考えです。送信者がI / Oエラーを検出すると、ターゲット上のすべてのファイルの削除は自動的に禁止されます。これは、送信側の一時ファイルシステムエラー(NFSエラーなど)によってターゲットから大量のファイルが削除されるのを防ぐためです。 --ignore-errorsオプションを使用してそれを上書きできます。 --deleteオプションは、--delete-WHENオプションと--delete-excludedのいずれかと競合することなく組み合わせて使用できます。ただし、--delete-WHENオプションが指定されていない場合、rsyncはrsync 3.0.0以降と通信する場合は--delete-duringアルゴリズムを選択し、以前のrsyncと通信する場合は--delete-beforeアルゴリズムを選択します。 --delete-delay および --delete-after も参照してください。
答え1
ソースの修正時間が最新の場合は、その
-u
オプションを使用してターゲットを更新する必要がありますか?
いいえ、すでにそのようなことが起こっています。実行される操作は-u
次のとおりです。防ぐターゲットが最新の場合は変更されます。それ以外の場合、-u
ファイルはソースバージョン(以前のバージョンである可能性があります)に更新されます。
-iオプションが必要ですか?
-i
(例--progress
:)は同期動作に影響を与えず、表示された出力にのみ影響します。選択した各ファイルに関する追加情報のみが表示されます。
答え2
あなたはすでに素晴らしいと許容できる答えを持っています。この回答はその回答を補完します。
ソースの変更時刻が最新の場合、ターゲットを
更新するには-uオプションを使用する必要がありますか?それとも-avで十分ですか?
オプションは-u
少しです。奇妙なIMHO 奇妙なことは、(明らかに)rsync
ソースファイルの更新を妨げることです。時間の変更ソースから最新バージョンの場合。これは状況によっては便利です。
-iオプションが必要ですか?
国際海事機関、-i
(また〜として知られています --itemize-changes
)オプションは次のとおりです。極度に使用中に発生する一般的な問題を解決するのに役立ちますrsync
。このオプションを使用したときに発生する問題の 1 つについては、man rsync
以下に説明します。
... 11文字の長さの秘密出力。一般的な形式は YXcstpoguax 文字列に似ています。
...そして不思議働く言葉です。しかし、次の表が見つかりました。助ける少し。このテーブルをコピーして貼り付けました。# comment
次のコマンドを呼び出すシェルスクリプトを入力しますrsync
。
# decode --itemize-changes output:
#
# YXcstpoguax path/to/file
# |||||||||||
# `----------- "Y" - the type of update being done::
# |||||||||| < : file is being transferred to the remote host (sent).
# |||||||||| > : file is being transferred to the local host (received).
# |||||||||| c: local change/creation for the item, such as:
# |||||||||| - the creation of a directory
# |||||||||| - the changing of a symlink,
# |||||||||| - etc.
# |||||||||| h: the item is a hard link to another item (requires --hard-links).
# |||||||||| .: the item is not being updated (though it might have attributes that are being modified).
# |||||||||| *: means that the rest of the itemized-output area contains a message (e.g. "deleting").
# ||||||||||
# `---------- "X" - the file type:
# ||||||||| f for a file,
# ||||||||| d for a directory,
# ||||||||| L for a symlink,
# ||||||||| D for a device,
# ||||||||| S for a special file (e.g. named sockets and fifos).
# |||||||||
# `--------- c: different checksum (for regular files)
# |||||||| changed value (for symlink, device, and special file)
# `-------- s: Size is different
# `------- t: Modification time is different; T: time set to transfer time
# `------ p: Permission are different
# `----- o: Owner is different
# `---- g: Group is different
# `--- u: reserved for future use
# `-- a: The ACL information changed
# `- x: extended attribute changed
たとえば、-i
このオプションを使用して生成された次の出力行を考えます。
>f..t....... Desktop/pics/SomePicture.jpg
次にデコード:
>
:ファイルがlocalhostに転送されています(受信)。f
: ファイル転送中t
:修正時間が異なる