Mac でも、Linux でも、Windows は該当しませんが、FileZilla などの FTP ファイル転送ソフトを使用しないでコマンドだけでサーバー間のファイルをやり取りする方法を勉強しましたのでメモします。
FTP ソフトよりも、ずっと便利でした♪
ポイント
- scp コマンド、secure copy (remote file copy program)、を使用してサーバー間でファイルをコピーする
- -p オプションを付けてもコピーされたファイルのパーミッション、タイムスタンプは元のままだが、所有者が変更される
- コピー元はファイルを指定する必要があるが、コピー先はディレクトリだけの指定で同名のファイルをコピーできる
- ファイル送信元のでも、ファイル送信先のときでも、初回はコマンドを打ったサーバーにRSA追加して良いかと問われる。つまり最大2回RSA追加して良いか否かの確認に応える必要がある。
scp コマンド実際の使い方
#リモートマシン間でファイルをコピー # -p ファイルの更新時間、アクセス時間、モードを保持 scp -p fromuser@fromhost:filepath touser@tohost:directorypath
実際にやってみました♪
★別のマシンAから自分のマシンへ
どちらのマシンでも scp コマンドは初めての使用でしたため、RSA の追加を求められました。ここで no を選択しますとコピーできませんので、yes を決断的に入力いたします。
また、コピー元ファイルの所有者がもともと root でしたため、別の所有者に変更してコピーしてから確認してみました。するとファイルのパーミッション、タイムスタンプは元のままでしたが、所有者が変更されていました。
[root@localhost tmp]# scp -p root@192.168.56.112:/var/log/anaconda.log root@192.168.56.111:/tmp/ The authenticity of host '192.168.56.112 (192.168.56.112)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.112' (RSA) to the list of known hosts. root@192.168.56.112's password: The authenticity of host '192.168.56.111 (192.168.56.111)' can't be established. RSA key fingerprint is yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.111' (RSA) to the list of known hosts. root@192.168.56.111's password: anaconda.log 100% 251KB 250.5KB/s 00:01 Connection to 192.168.56.112 closed. [root@localhost tmp]# ll 合計 256 -rw------- 1 root root 256514 4月 5 19:26 anaconda.log [root@localhost tmp]#
★自分のマシンから別のマシンAへ
コピー先のディレクトリはもともとありませんでしたので、scp によるコピーによってディレクトリが作成されておりました。ここで気になったのがパーミッションです。scp コピーで自動的に作成されたディレクトリのパーミッションが、drwxrwxrwt となっておりました。最後の t は何でしょうか?馴染みありません。ここでは掘り下げません。
ここでもやはりコピー先のファイルはパーミッション、タイムスタンプは元のままでしたが、所有者は変更されて apache から root になっておりました。
[root@localhost tmp]# scp -p root@192.168.56.111:/var/log/php_errors.log root@192.168.56.112:/var/tmp/ The authenticity of host '192.168.56.111 (192.168.56.111)' can't be established. RSA key fingerprint is yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.111' (RSA) to the list of known hosts. root@192.168.56.111's password: root@192.168.56.112's password: php_errors.log 100% 342KB 342.1KB/s 00:00 Connection to 192.168.56.111 closed. [root@localhost tmp]#
★別のマシンBから別のマシンAへ
操作しているマシンからファイルをコピー、または操作しているマシンへファイルをコピー、以外にも別のマシン同士でファイルをコピーもできるのですね。 実際にやってみて、わたくし感動いたしました。
[root@localhost tmp]# scp -p root@192.168.56.113:/tmp/epel-release-5-4.noarch.rpm root@192.168.56.112:/tmp/ The authenticity of host '192.168.56.113 (192.168.56.113)' can't be established. RSA key fingerprint is zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.113' (RSA) to the list of known hosts. root@192.168.56.113's password: The authenticity of host '192.168.56.112 (192.168.56.112)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.56.112' (RSA) to the list of known hosts. root@192.168.56.112's password: epel-release-5-4.noarch.rpm 100% 12KB 12.0KB/s 00:00 Connection to 192.168.56.113 closed. [root@localhost tmp]#
おわりに
以前、Mac のターミナルからサーバーにファイルをアップロードするために、一度 scp コマンドを使用しました。
その時は気が付きませんでしたが、自分と別のサーバだけでなく、別のサーバ同士でもファイルのコピーができるのですね。これは新発見でした♪
それはともかく普段使いとしては、複数のサーバを運用していて、あのサーバの設定ファイルはどうだっけな?というときにコピーするなどの使い方ができそうです。
以上です。