rsyncを使用してファイルをコピーする代わりにハードリンクを作成する

rsyncを使用してファイルをコピーする代わりにハードリンクを作成する

次のコマンドは、含まれているfoo(含まれていないbar)すべてのファイルを再帰的に検索し、ターゲットディレクトリのディレクトリ構造を保持します。たとえば、/path/to/2017/foo.psrespとを含むディレクトリの下に/path/to/2018/foo.pdfサブディレクトリを作成します2017。 。2018~/path/to/dir/foo.psfoo.pdf

find . -iname \*foo\*pdf -exec rsync -R --exclude='*bar*' {} ~/path/to/dir/ \;

コピーの代わりにハードリンクで終わるこのコマンドと同等のものは何ですか?

ベストアンサー1

誰もこれを行っていないので、件名の質問に答えるにはを使用できます。通常、コピーの代わりにハードリンクを使用して--link-destrsync同期を使用する場合は、次のことができます。s/d/

rsync -r --link-dest="$PWD/s/" s/ d/

ディレクトリ全体ではなくファイルを指定する特定の要件に応じて、次のことができます。

find . \
  -iname \*foo\*pdf \
  -exec bash -c '
    rsync -R \
      --exclude="*bar*" \
      --link-dest="$PWD/$(dirname "$1")" \
      "$1" \
      ~/path/to/dir/
  ' sh {} \;

ここでbashを導入した理由は、dirnameファイルパスを取得できるためです。--link-destファイル自体ではなくディレクトリが必要です。また、現在のディレクトリではなくターゲットディレクトリに基づいている$PWDために使用します。--link-dest

おすすめ記事