Mac
Linux
SSH
scp

sshでファイル転送の手順

More than 1 year has passed since last update.

はじめに

サーバー環境によっては、セキュリティー上FTPソフトでのファイル転送ができないことがあります。
その際、ターミナルなどのCLIを使ってのファイルの転送をするのですが、デザイナーの方などの普段あまりコマンドライン上での作業をすることがない方々の参考になればと思います。
※ Mac OSを前提

1.sshでサーバーにログイン

まずはサーバー情報を用意
1.サーバー名:hoge.comやhoge.sakura.ne.jpなど
2.アカウント名:hoge-user
3.サーバーパスワード:レンタルサーバーの場合ランダムで適当な文字列であることが多いです。例:bb45Ri34みたいな

上記を用意したあとターミナルを起動します。
ターミナルは「command+space」を押し、「ターミナル」と打って検索にヒットするはずです。
ターミナル起動後、$ ssh アカウント名@サーバー名と入力。
$は打たなくて大丈夫です。上記のサーバ情報だとssh hoge-user@hoge.comと入力することになります。入力後passwordの入力を求められるので、サーバーパスワードを入力、ターミナルにパスワードを打ち込む際に何も表示されてないので分かりづらいですが、ちゃんと入力されているので、入力後Enterを押します。
サーバーにログイン後、ターミナルに[アカウント名@localhost ]$のような感じでプロンプトが置きかわるかと思います。そうなっていればログイン完了です。

2.サーバー内のディレクトリを確認

現在自分がどの階層にいるのかをチェックします。
以下主に使うコマンド

$ pwd //現在の階層を確認
$ ls //現在の階層にあるフォルダとファイルを確認
$ cd フォルダ名 //cdコマンドでディレクトリを移動できます
$ cd .. //一つ上のディレクトリ階層に移動
$ cd //cdのみでEnterを押すとルートディレクトリまで移動できます
$ vi ファイル名 //Vimエディタを立ち上げファイルの中を確認

基本的にpwdコマンドで階層を確認、lsコマンドでディレクトリを確認、cdコマンドでアップロードを行うディレクトリまで移動というのが作業の流れかと思います。

3.SCPコマンドでファイルの転送

上記で、アップロードを行うディレクトリを確認したらscpコマンドを使ってファイルの転送を行います。
zip形式の方が早く転送出来そうな気がしたので、アップロードを行いたいフォルダをzipに圧縮しておきました。

// ローカル(自分のPC)からリモート(サーバー)へ
// scpコマンドの引数オプションで -rを使うとディレクトリを転送出来ます。
$ scp -r /Repository/hoge.zip hoge-user@hoge.com:/home/hoge/share/hoge-upload-theme
//上記入力後パスワードを聞かれますので、sshの際に入力したパスワードを入力

上記を解説します。
1. $ scp -rはscpコマンドの引数オプションをもたせてディレクトリを転送する方法です。自分の場合zipに圧縮したのでつけなくても大丈夫でした。
2. /Repository/hoge.zipはローカル(自分のPC)内にあるどのファイルもしくはディレクトリを転送するか指定しています。Repositoryディレクトリにあるhoge.zipファイルを転送するよということです。
3. hoge-user@hoge.comは上の方でもやったアカウント名@サーバー名になります。
4. hoge-user@hoge.com:/home/share/hoge-upload-themeはsshでログイン後pwdコマンドで階層を確認した際の一番上のディレクトリから入力します。たいていの場合homeディレクトリからかと思います。

以上で転送出来たかと思いますが、自分の場合zipで転送してしまったので、再度sshでログインして、zipファイルを解凍する必要があったので、こちらも併せて書いておきます。

4.おまけ

scpコマンドで転送したzipファイルを解凍する。
再度sshでログイン$ ssh hoge-user@hoge.com入力後、パスワードも入力してログイン完了。
pwdコマンドで現在の位置確認、/home/ディレクトリにいる。
転送したフォルダまで移動、/home/share/hoge-upload-themeに転送したので、cd /share/hoge-upload-theme移動。
lsコマンドで中にhoge.zipがあるか確認。
$ unzip hoge.zipで解凍が出来ます。
ついでにzipファイルは要らないので、rm hoge.zipとして要らないzipファイルを削除しておきました。