今号では、コンピュータ間でファイル転送を行う方法をいくつかご紹介をします!
コンピュータ間でのファイル転送とは
ここでお話する「ファイル転送」は、コンピュータ間でのファイルのアップロード、および
ダウンロードを指します。
今回ご紹介するのは、ファイルのアップロード、ダウンロードどちらにも対応したコマンドです。
また今回ご紹介する方法は、いずれもファイルの転送元、転送先共に SSH 接続を許可する必要があります。
scp コマンド
scp コマンドは、ssh を使用してファイル転送を行ないます。
例1:ローカルにある file1 というファイルを、リモートサーバ (example.com) に転送 (アップロード)
する
$ scp ~/file1 user@example.com:~/scpdir file1 100% 0 0.0KB/s 00:00
例2:リモートサーバ (example.com) にある file2 というファイルを、ローカルに転送 (ダウンロード)
する
$ scp user@example.com:~/scpdir/file2 ~/scpdir file2 100% 0 0.0KB/s 00:00
また、-r オプションを付けるとディレクトリごと転送することができます。
$ scp -r scpdir/scpsubdir user@example.com:~/scpdir
$ scp -r user@example.com:~/scpdir/scpsubdir ~/scpdir
rsync コマンド
rsync コマンドは、2つのサーバ間のファイルやディレクトリを同期します。用途は scp コマンドと
同じくファイルをコピーすることですが、scp と違う点は、コピー先に同じファイルがあった場合、変更がない
ファイルはコピーしません。
この仕様により、ファイルの転送が高速に行われます。
例1:ローカルにある file1 というファイルを、リモートサーバ (example.com) に転送 (アップロード)
する
$ rsync ~/file1 user@example.com:~/scpdir
※scp コマンドのように、ファイルが転送された旨は表示されません。
例2:リモートサーバ (example.com) にある file2 というファイルを、ローカルに転送 (ダウンロード)
する
$ rsync user@example.com:~/scpdir/file2 ~/scpdir
また、scp コマンドと同様に -r オプションを付けるとディレクトリごと転送することができます。
$ rsync -r scpdir/scpsubdir user@example.com:~/scpdir
$ rsync -r user@example.com:~/scpdir/scpsubdir ~/scpdir
sftp コマンド
sftp コマンドは、対話形式でファイル転送を行ないます。
あらかじめ指定したサーバに接続し、そのサーバからファイルをコピーしたりファイル転送を行ないます。
例1:ローカルにある file1 というファイルを、リモートサーバ (example.com) に転送 (アップロード)
する
$ sftp user@example.com Connected to example.com. sftp> put scpdir/file1 Uploading file1 to /home/user/scpdir/file1 file1 100% 4 8.6KB/s 00:00
例2:リモートサーバ (example.com) にある file2 というファイルを、ローカルに転送 (ダウンロード)
する
sftp> get scpdir/file2 Fetching /home/user/scpdir/file2 to file2 /home/user/scpdir/file2 100% 4 5.0KB/s 00:00
また、scp / rsync コマンドと同様に -r オプションを付けるとディレクトリごと転送することができます。
sftp> put -r scpdir Uploading scpdir/ to /home/user/scpdir Entering scpdir/ scpdir/file2 100% 4 10.2KB/s 00:00 scpdir/file 100% 4 10.7KB/s 00:00
sftp> get -r scpdir/ Fetching /home/user/scpdir/ to scpdir Retrieving /root/scpdir /home/user/scpdir/file 100% 4 5.9KB/s 00:00 Retrieving /home/user/scpdir/scpsubdir /home/user/scpdir/scpsubdir/subfile1 100% 4 5.8KB/s 00:00 /home/user/scpdir/scpsubdir/subfile2 100% 4 6.1KB/s 00:00 /home/user/scpdir/file2 100% 4 5.8KB/s 00:00
その他に、sftp でログイン中に使用できるコマンドとして、以下のものがあります。
- ls
リモートサーバ側のファイル一覧を表示する - lls
ローカルサーバ側のファイル一覧を表示する - pwd
リモートサーバ側のカレントディレクトリを表示する - lpwd
ローカルサーバ側のカレントディレクトリを表示する
他にもたくさんありますが、こちらでは紹介しきれないため詳しくは man sftp コマンドを
参照してみてください。