ファイル名にコロンが含まれる rsync

ファイル名にコロンが含まれる rsync

バックアップと携帯性の両方の理由から、外付けハードドライブに同期する必要があるかなり大きなディレクトリがあります。

/work

このフォルダを外付けハードドライブにコピーするために、次の rsync コマンドを実行しようとします。

rsync -avz /work /media/extern_drive --max-size '4G'

これは、 が含まれるファイルをコピーしないことを除けば、正常に動作するようです:

この投稿では、1 つのファイルに対する解決策を示します。 rsync: ファイル名のコロンしかし、問題は、これらのファイルがさまざまなディレクトリに散在しているため、手動で実行できないことです。

ファイル名にコロンが含まれるファイルを再帰的に rsync する方法はありますか?

答え1

外付けドライブでは、ファイル名にコロンを使用できない VFAT などのファイルシステムが使用されていると思われます。

簡単なオプションとしては、ファイルをアーカイブ ( zip、、7zなどtar.xz、お好きな形式) としてバックアップすることです。この方法では、最大ファイル サイズ以外のファイルシステムの特性による制限を受けません。

もう一つの可能​​性としては、rdiff バックアップは、宛先ファイルシステムに収まらないファイル名を変換します。提案されたによるプーリー

サポートされていない文字に対する一般的なアプローチは、ファイルシステム層を利用してファイル名を変換することです。ヒューズファイルシステムポジショブルファイル名を Windows の VFAT がサポートする名前に変換します。

mkdir ~/mnt
mount.posixovl -S /media/extern_drive ~/mnt
rsync -a /work ~/mnt
fusermount -u ~/mnt

見るUSB キーで rsync するときにコロンを置き換えるにはどうすればよいですか?詳細については、そのスレッドをチェックして、新しい解決策がないか確認してください。

答え2

次のように、ファイル名にコロンが含まれるファイルのパターンを明示的に含めてみます。

$ rsync -avz --include '*:*' /work /media/extern_drive --max-size '4G'

$ mkdir 1 2
$ touch 1/file{1..5}
$ touch 1/file:{1..5}
明示的に除外する
$ rsync -avz --exclude '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5

sent 313 bytes  received 114 bytes  854.00 bytes/sec
total size is 0  speedup is 0.00
明示的に含める
$ rm -fr 2/*

$ rsync -avz --include '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5
file:1
file:2
file:3
file:4
file:5

sent 573 bytes  received 209 bytes  1,564.00 bytes/sec
total size is 0  speedup is 0.00

関連情報