scpとrsyncの所作の違い。気をつけるところ


scpでダサい作業していたら、riywoさんのポストを見つけて質問してみた。



複数のファイルとかはrsync使うけど
ギガバイトくらすの大きいファイルはscpで使い分けてた。

あれ、何で使い分けてるんだっけって...
思い返してみて

「コピー対象のファイルが大きいと、一時ファイルでディスクが逼迫する可能性がある。」

という貧乏臭い理由からだったことを思い出して
赤い実はじけた。

$ rsync -av /tmp/hoge.img /tmp/hoge2.img

とする場合、

$ ls -la /tmp/

をすると、ディレクトリ内に一時ファイルとして
「.hoge2.img.MbWbve」 のようなファイルがつくられているのがわかります。


o scp
コピー対象のファイルを直接書き込む為
途中キャンセルなどした場合、転送先のファイルは不完全な状態になります。

o rsync
転送用の一時ファイルを作成し、転送が完成した時点で
一時ファイルからコピー対象のファイルへ移動する為、転送先の
更新対象のファイルは、転送先で完全にコピーされた後に上書きされます。


ので、ファイルの保全性から考えると
rsyncの方が1クッション置いてるので安全かなと思います。


また、一時ファイルなんか作ってられんって人は
rsync に --inplace ってオプション付ければ一時ファイルつくらないで
直接上書きしてくれます。

ソース完全に読んだわけではないので所々足りないところがあると思いますので
誤りなどありましたらご指摘頂ければと思います。

scpでやっていたこと、rsyncでやっていこうかな。

無意識に使ってるコマンドとか、無意識に使ってるオプションとか
当たり前のようになってしまって、その存在自体に疑問を抱かなくなるの老害化の手前なので
常になんでだろう。って考えること忘れないようにしていきたいものです!

( '-')-3