高木のブログ

scpをやめてrsyncを使うための予習

2021/09/28

リモートサーバーからファイルを持ってくる時にいつもscpコマンドを使っていたけど、scpコマンドは非推奨かつ時代遅れで今はrsyncコマンドがいいらしい

rsyncはアプリケーションをデプロイする時のコマンドの中で動いてるのを見かけたくらいでよくわかってない
ファイルのコピーというよりは同期のイメージだった

すぐすぐrsyncに移行というわけではないけど、scpでよく使うパターンだけ予習しておく

scpとrsyncのコマンドの違い

ファイル単体のコピーとディレクトリごとコピーの2つのパターンを確認する

事前準備

リモートサーバーに以下のような構造でディレクトリとファイルを用意しといた

$ tree .
.
└── sample_dir
    └── sample_file.txt

1 directory, 1 file

ファイル単体のコピー

$ scp user@xxx.xxx.xxx.xxx:~/sample_dir/sample_file.txt ./
$ rsync user@xxx.xxx.xxx.xxx:~/sample_dir/sample_file.txt ./

ディレクトリごとコピー

$ scp -r user@xxx.xxx.xxx.xxx:~/sample_dir ./
$ rsync -r user@xxx.xxx.xxx.xxx:~/sample_dir ./

まとめ

基本一緒だった
唯一違うところは、-rを付けた時にディレクトリ名の後にスラッシュがある場合

$ scp -r user@xxx.xxx.xxx.xxx:~/sample_dir/ ./
$ ls
sample_dir
$ rsync -r user@xxx.xxx.xxx.xxx:~/sample_dir/ ./
$ ls
sample_file.txt

scpはスラッシュを付けてもディレクトリごとコピーされるが、rsyncはディレクトリ内のファイルがコピーされる

参考

なぜscpの代わりにrsyncコマンドを使うのか? - たかけのブログ


ytkg

Written by ytkg, Twitter, GitHub