TES Blog

株式会社テクニカルエンジニアリングサポートに所属する社員が、自身が携わるテクノロジーやイベントに関する情報を発信しています。

サーバー環境にある権限のついたファイルをローカル環境にコピーする方法

nginxのログファイルをサーバーからローカル環境に持ってこようとした時に、 Permission denied でエラーとなってしまったのでその時に行なった対策を載せます。

下記参考にさせていただきました。ありがとうございます!!

sshでやる

コピー対象のファイル内容が、ローカル環境で指定したファイルにコピーされます。

ssh -t {{ ホスト名 }} "echo {{ sudo password }} | sudo -S cat /var/log/nginx/access.log" > {{ ローカル側のコピー先ファイル }}

※ 上記コマンドでは echo コマンドによりパスワードの文字列が履歴に残ってしまうため、セキュリティリスクが高まります。利用には細心の注意が必要です。

scpでやる

1.対象のファイルをホームディレクトリにコピー

安全に作業を行うため、一旦ホームディレクトリにコピーする。

ssh {{ ホスト名 }}
sudo cp /var/log/nginx/access.log ~/

2.所有者の変更

ホームディレクトリにコピーしたファイルの権限を自分に書き換える。

# ユーザー名確認
whoami
# 所有者の変更
sudo chown {{ ユーザー名 }} access.log

3.SCPでサーバーからローカルに持ってくる

権限を変更したファイルを、ローカル環境の適当なディレクトリにファイルごとコピーする。

scp {{ ユーザー名 }}@{{ ホスト名 }}:~/access.log {{ ローカルディレクトリ }}

4.ホームディレクトリにコピーしたファイルを削除

コピーが終わったら、ホームティレクトリにコピーしたファイルは不要なので削除する。

rm access.log