rsync -rコマンドを使用してドットファイル(.x)を含めます。

rsync -rコマンドを使用してドットファイル(.x)を含めます。

次のコマンドがあります。

rsync -r --exclude="node_modules" "/r2g_shared_dir/vamoot"/* "/home/node/.docker_r2g_cache/b640e7fd-27a7-4dd8-8ca8-5363a1c59c35"

私は/ *を使用すると、ドットファイル(.で始まるファイル/フォルダ)がコピーされないことに気づきました...

このファイルをどのように含めることができるかをご存知ですか?

私の考えに最適なアプローチは、/*表記を捨てて、単に使用することです。

rsync -r --exclude="node_modules" "/r2g_shared_dir/vamoot" "/home/node/.docker_r2g_cache/b640e7fd-27a7-4dd8-8ca8-5363a1c59c35"

しかし、他の方法はありますか?

ベストアンサー1

パターンマッチングをrsyncに残すことをお勧めします。これにより、その時点でシェル内のシェルとオプションに依存しなくなります。

これを行うとき:

rsync -a /some/dir/* host:/remote/dir/

/some/dir/*次に、rsyncが実際に次のように実行されるようにその部分を拡張するようにシェルに要求します。

rsync -a /some/dir/adir /some/dir/afile /some/dir/anotherfile [etc] host:/remote/dir/

これはしばしば意図によく似ていますが、質問が提示されたという事実は常にそうではありません。したがって、以下を実行することをお勧めします。

rsync -a /some/dir/ host:/remote/dir/

今、rsyncは(recursiveの略語なので-a)ディレクトリを再帰的に探索します。-rlptgoD-r/some/dir/remote/dir/some/dir

ソースパスはスラッシュで終わるため、/送信されたファイル名はソースの場所のすべての部分を無視します。/some/dirパスすると、dirディレクトリを明示的に同期させるように指示します。含むその名前。何が起こっているのか本当に理解していない限り、これらの混乱を避けるために、常に最後のスラッシュを追加する習慣を持つことをお勧めします。

おすすめ記事