指定されたサブディレクトリの特定のファイル形式のみを再同期化

指定されたサブディレクトリの特定のファイル形式のみを再同期化

これは私のソースディレクトリ構造です。

../openwrt
../openwrt/BackupOfPackages
../openwrt/BackupOfSettings
../openwrt/BackupOfImages

rsyncを使用してターゲットディレクトリにミラーリングしたいと思います。 3つのサブディレクトリにあるファイルのみを再同期したい、拡張子を持つファイルのみを同期させたい:
.installedfrom thefolderfromthefolderfromthefolderBackupOfPackages
.img.gzBackupOfImages
.tar.gzBackupOfSettings

私のソースディレクトリには、basedir "openwrt"と各サブディレクトリにさまざまなファイルが混在しています。ただし、上記のように、特定のサブディレクトリの特定のファイル形式のみを同期したいと思います。

ここに画像の説明を入力してください。

これは私のrsyncコマンドです。

openWrtPath="/mnt/usb/openwrt/"  
ncpPath="/media/myCloudDrive/openwrt"

rsync -vvrit --include='/' --include='BackupOfSettings/' --include='BackupOfSettings/**.tar.gz' --include='BackupOfPackages/' --include='BackupOfPackages/**.installed' --include='BackupOfImages/' --include='BackupOfImages/**.img.gz' --exclude='/*' --delete --delete-excluded $openWrtPath ncp:$ncpPath

コマンドを実行すると、これが表示され非表示になる内容です。 basedirではopkg.installedと「新しいフォルダ」を正しく隠しますが、BackupOfSettings、BackupOfImagesなどから.installedなどのファイル形式は非表示になりません。

ここに画像の説明を入力してください。

Rsyncはソースからターゲットまでほぼすべてを同期しますか? ここに画像の説明を入力してください。

拡張のみをコピーするようにrsyncコマンドを変更するには:
.installedBackupOfPackagesフォルダへフォルダ
.img.gzBackupOfImagesフォルダ
.tar.gzへ:つまり、さまざまなサブディレクトリから宛先に転送しないファイル形式が、ソースシステムの対応するサブディレクトリにあっても正しく隠されます。BackupOfSettings

修正する

文を載せてから答えを見つけたと思い--exclude='/*'ます--exclude='*'。誰かがこれら2つの除外の違いを説明できますか?

スーダン'/*'"basedir(openwrt) のすべてのエントリを除外します。これは basedir のサブディレクトリには適用されません。"

ありがとうございます!

ベストアンサー1

'/*'「basedir(openwrt)のすべてのエントリを除外します。これはbasedirのサブディレクトリには適用されません」という意味ですか?

はい、/これはトランスポートディレクトリのルートであり、/*そこにあるすべてのエントリ(ファイルとディレクトリ)と一致します。

コマンドの組み込みを次のように短縮できます。

rsync -ai \
  --include='BackupOf***/' \
  --include='BackupOfImages/**.img.gz' \
  --include='BackupOfSettings/**.tar.gz' \
  --include='BackupOfPackages/**.installed' \
  --exclude='*' \
  --delete --delete-excluded \
  "$openWrtPath" ncp:"$ncpPath"

これが意味するのは、(たとえば)--include='BackupOf***/'で始まるすべてのディレクトリとそのサブディレクトリを含むことです。これらのサブディレクトリを含める必要がない場合に変更し、ファイル拡張子を2から1に変更することもできます。BackupOfBackupOfImages/sub1/sub2/BackupOf*/***

-aインクルード-tおよびその他のオプションと一緒にアーカイブモードを使用し、両方の変数を参照しました。

おすすめ記事