リモートルート(/)で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

答え2

tldr:name@ip://代わりに試してみてくださいname@ip:/

私は同様のことを試しています。 WINScp を使用して scp スクリプトを実行し、デフォルトのリモートディレクトリを指定せずに、スクリプトは常に同じディレクトリに接続されます。ランダムに見える、ファイルシステム内のフォルダです。私はこれが私のホームディレクトリだと思いますusername

URLが/ieで終わると、そのname@ip:/アドレスにリンクされます。ランダムホームディレクトリ。ディレクトリが存在しない場合も同様です(特定のコマンドを実行すると奇妙な動作が発生します...)。明示的に実行した後、cd /ルートディレクトリに接続しました。

これを変更した後は、/scpがルートディレクトリに接続されるため、実行する必要はありません。//name@ip://cd /

答え3

使用scp -r name@ip:/. ./local_folder

または、このddコマンドをビット単位のバックアップに使用できます(参照:これ)

答え4

だから私は実際に私が望むようにいくつかのファイルを無視するより速いオプションを見つけました。

sshfs user@server: sshfsdir
rsync --recursive --exclude=whatever sshfsdir/path/on/server /where/to/store

(からhttps://stackoverflow.com/questions/15121337/recursively-use-scp-but-exclusion-some-folders)

関連情報