root が使用できない環境で、root がオーナのファイルを転送したい場合、よくやるのが以下の手順です。
- 一時的に /tmp などにファイルを scp する
- ssh で sudo cp する
- 上記1で/tmp に置いたファイルを削除する
これは、面倒です。。
以下のように ssh に標準入力経由でローカルファイルのデータを渡し、
sudo で root 権限を使用して dd コマンドで処理すると、
sudo で root 権限を使用して dd コマンドで処理すると、
ローカルのファイルを1回でリモートサーバにファイル転送できます。
ssh user@server "sudo dd of=/etc/hosts" < my_hosts
リモートサーバのファイルをローカルに転送したい場合は、以下のとおり。
ssh user@server "sudo dd if=/etc/hosts" > hosts.backup
dd のかわりに、tar コマンドを使用して、リモートサーバのファイルを、直接ローカルにアーカイブすることもできます。
ssh user@server "sudo tar cvfz - /etc" > etc.tgz