rsync は、フォルダ外のすべてのファイルを除き、特定のフォルダとその内容と構造を保存します。

rsync は、フォルダ外のすべてのファイルを除き、特定のフォルダとその内容と構造を保存します。

私のファイルシステムは次のとおりです。

源泉/

folder1/
  subfolder/
    contents
  other_subfolders
  file1
  file2
folder2/
  subfolder/
    contents
  other_subfolders
  file1
  file2
folder3/
  subfolder/
    contents
  other_subfolders
  file1
  file2
file1
file2

私がコピーしたいほとんどすべてはこれです:

folder1/
  subfolder/
    contents
folder2/
  subfolder/
    contents
folder3/
  subfolder/
    contents

言い換えれば、私はただ持続したいです。

  • フォルダ構造
  • サブフォルダとその内容のコピー
  • サブフォルダー外のファイル、またはサブフォルダー外の別のフォルダーを無視します。

現在私は努力しています:

$cd destination
$rsync -atvr --include="*/subfolder/" --exclude="*" source/ .

入れて--exclude="*"埋め込みに入れたもの、つまり*/subfolder/ソースの最上位フォルダ内にあるサブフォルダというフォルダを除くすべてを除外したいと思います。

ただし、ファイルはコピーされません。なぜ?私は何を見逃していますか?

私も試しました

$cd destination
$rsync -atvr --include="*/subfolder/" --exclude="*/*" source/ .

しかし、これを行うと:

folder1/
  subfolder/
folder2/
  subfolder/
folder3/
  subfolder/
file1
file2

つまり、ファイルをソース(外部フォルダ)に保存し、必要なサブフォルダを作成しますが、その内容をコピーしないでください。

編集:Sivaの要求に応じてパット後rsync -av --include='/' --include='/subfolder**' --exclude='*' source/ .

私は得る:

システムに接続してください:

1)SSHキーを使用しない場合は、パスワードプロンプトにTACCパスワードを入力してください。 2) TACCトークンプロンプトで6桁のコードを入力し、 と入力します。

Password:
TACC Token Code:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "C.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
receiving incremental file list
./

sent 59 bytes  received 104 bytes  10.52 bytes/sec
total size is 3,242  speedup is 19.89

しかし、約束します。これらすべての警告は現在の問題とは無関係であり、何らかの方法でサーバーにアクセスしようとするたびにポップアップされます(ssh、scp、rsync、...)。

答え1

コピーするソースファイルのセットを指定するために相対パスを使用すると、潜在的--includeな複雑さを回避できます。--exclude

想像する

最上位ディレクトリにサンプルディレクトリとファイル構造を作成しますsrc。選択したコンテンツを最上位ディレクトリにコピーします。dst

mkdir -p src/folder{1,2,3}/{subfolder,other_subfolders} dst
touch src/folder{1,2,3}/subfolder/contents src/{folder{1,2,3}/,}file{1,2}
find src | LC_ALL=C sort

rsync --dry-run -avR src/./folder*/*/* dst/

出力(からrsync

sending incremental file list
folder1/
folder1/subfolder/
folder1/subfolder/contents
folder2/
folder2/subfolder/
folder2/subfolder/contents
folder3/
folder3/subfolder/
folder3/subfolder/contents

/./ソースパスの残りの部分がターゲットで使用されるポイントを示します。--dry-run選択したタスクを実行するには削除してください。

答え2

男性の場合:

パターンに / (末尾 / は計算されません) が含まれている場合は、パス名全体と一致します。メインディレクトリを含める

次のようにしてみてください。

 rsync -av --include='/' --include='/subfolder**' --exclude='*' source/ destination/

関連情報