カテゴリー
Linux

【コマンド】FTP アプリを使わないファイルのアップロード、ダウンロード方法について勉強しました♪

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 コマンドを使用しました。

その時は気が付きませんでしたが、自分と別のサーバだけでなく、別のサーバ同士でもファイルのコピーができるのですね。これは新発見でした♪

それはともかく普段使いとしては、複数のサーバを運用していて、あのサーバの設定ファイルはどうだっけな?というときにコピーするなどの使い方ができそうです。

以上です。

コメントを残す