私のファイルシステムは次のとおりです。
源泉/
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/