何千ものサブディレクトリと深いサブフォルダのパスを含むディレクトリをバックアップしたいと思います。これらのディレクトリ.
の多くは.
。指定で十分ですinclude="*"
か?これはすべてを扱うでしょうか?
rsync -rvh --compress-level=0 --stats --progress --include ".*" user@vm:/mnt/storage8/backups ~/data/backup_of_backups/
答え1
すべてのファイルはデフォルトで含まれているため、すべてのファイルを含めるか、--include
オプションを渡さないでください。--exclude
モードを使用している場合、rsyncはドットファイルを特に処理しません。ドットファイルをスキップするには、を使用する必要があります--exclude='.*'
。
これには--include='.*'
ドットファイルのみが含まれます。これは、「すべての文字」を表し、「前の文字またはグループの数に関係なく」を意味する正規表現とは異なり、それ自体が.
「すべての文字シーケンス」を意味するシェルパターンです。除外ディレクティブがなくてもすべてのファイルを取得できるため、インクルードディレクティブは意味がありません。ただし、一部の除外ディレクティブがある場合は、「ドットファイルを含むすべてのファイルを含める」という意味ではなく、「ドットファイルを含む」を意味するだけです。名前がドットで始まらないディレクトリにそれ自身を再帰することはありません。*
.
*
--include='.*'
答え2
いいえインクルードまたは除外パターンを指定すると、rsync
隠しファイルとディレクトリがコピーされます。
rsync --stats --progress -av user@vm:/mnt/storage8/backups ~/data/backup_of_backups/
答え3
使用shopt -s dotglob
。これにはドットファイルが含まれます。これはbash設定なので、mv
コマンドも変更されます。
https://unix.stackexchange.com/a/446353/346155
編集:許可された答えによると、rsyncにはデフォルトでドットファイルが含まれています。この質問は「rsync dot file」に対するGoogleの最高の結果であるため、rsyncコマンドは失敗しました。 OPは通常のrsyncを使用しようとしませんでしたが、ディレクトリがコピーされないように、ディレクトリの末尾にスラッシュの後にアスタリスクを追加することがよくあります。入力するrsync の "sync" が実際にディレクトリを同期していると仮定すると発生する宛先ディレクトリです。だから私の場合は、dotglobのシェルオプションを使って私の問題を解決し、あなたの問題も解決することができます。また、他の/dir/*
種類のワイルドカードマッチングでも機能します。個人的に、私はこれが/を使用するよりも直感的で明確であると思います。これは/dir/
、ターゲットディレクトリで使用されるときに解釈される長いディレクトリ区切り文字のリストを完成させることを意味する可能性があるためです。
また、このオプションはBashではデフォルトでは適用されないため、デフォルトでこのシェルオプションを使用すると有害な副作用があるかどうかを知りたいです。私はこれがUnixデザインの一部にすぎないと思います。隠しファイルはデフォルトでコピーまたは移動しないでください(再度、formを使用しない限り/dir/
)。有害な理由が欠けていない限り、より直感的で予想されるように、すべてのファイルをデフォルト値にコピーすることを提唱します(私が考えることができる唯一のことは、人々が移動したくないか、単にあなたが望む場所関連情報を持っているということです)。非ディレクトリからメディアデータをコピーするには、まったくコピーしないよりもコピーする方が良いと思うかもしれません。