rsync でディレクトリごとコピーする際に気をつけること~ディレクトリの中身をぶちまけないために


結論

NG1.sh
rsync -r from_dir/from_file/ to_dir/

元ディレクトリのパスにケツスラッシュをつけると、from_dir はコピーされず、from_dir以下にあるフォルダ、ファイルがto_dir以下にコピーされる


├── from_dir
│   ├── from_1.txt
│   └── from_2.txt
└── to_dir
    ├── from_1.txt
    └── from_2.txt

そのため、

OK1.sh
rsync -r from_dir/from_file to_dir to_dir/

のようにケツスラッシュをなくすか、

OK2.sh
rsync -r from_dir/from_file/ to_dir to_dir/from_dir

のように、ケツスラッシュをつけた上でコピー後に保存したいdirの名前を明示的に書く必要がある(この場合はto_dirの方のケツスラッシュはつけてもつけなくてもOK

.
├── from_dir
│   ├── from_1.txt
│   └── from_2.txt
└── to_dir
    └── from_dir
        ├── from_1.txt
        └── from_2.txt

前書き

リモートでscpを使うのはもうやめた方がいいという話があるそうです。

また、スパコンにデータをコピーする際に途中でkill されたので、途中から実行することができる(ディレクトリを同期できる)scp ではなくrsyncを使ってみました

その結果rsync のディレクトリ指定の罠にハマって、コピーしたい元フォルダ以下のファイルを全てスパコンにぶちまけることになったので備忘録

scp とrsync の比較(引用)1

path 指定 scp rsync
from/files_dir/ dest/ NG NG
from/files_dir dest/ NG OK
from/files_dir/ dest/files_dir OK OK
from/files_dir dest/files_dir OK NG
from/files_dir/ dest/files_dir OK OK
from/files_dir dest/files_dir/ OK NG