リモートルート(/)でscpする方法

リモートルート(/)でscpする方法

リモートの場所でscpを試みており、ファイルシステム全体(小型組み込みLinuxデバイス)をコピーしようとしています。 SCPは私が試した方法が好きではありませんでした。

scp -r name@ip:/ ./local_folder

次のエラーが発生します。

error: unexpected filename:

-v を使用して実行すると、最後のメッセージは次のようになります。

debug1: Sending command: scp -v -r -f /
Entering directory: D0755 0 
Sink: D0755 0 
error: unexpected filename:

もし私がするなら

scp -r name@ip:/etc ./local_folder

同じデバッグフラグメントは次のとおりです。

debug1: Sending command: scp -v -r -f /etc
Entering directory: D0755 0 etc
Sink: D0755 0 etc

検索するのは少し難しいです。 「scpルートスラッシュ予期しないファイル名」などのクエリを検索しようとすると、同じ問題を持つ人が見つかりません。

ベストアンサー1

見つかったすべてのシンボリックリンクに従うので、scpファイルをそのままコピーするツールを使用する方が合理的です。

このrsyncプログラムは、以下よりもディレクトリ構造を再構築できますscp

rsync -av name@ip:/ ./local_folder

これはファイルメタデータ(タイムスタンプなど)を保存するだけでなく、ディレクトリ/にある隠しファイル(存在する場合)もコピーします。

rsyncさらに使用することで、ハードリンクを保存できます-H

rsyncsshデフォルト転送として使用されます。


tarリモートシステムでも使用できますssh

ssh name@ip tar -c -f - -C / . >local_folder/filesystem.tar

または

ssh name@ip tar -c -f - -C / . | tar -v -x -f - -C local_folder

おすすめ記事