リモートの場所で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
。
rsync
ssh
デフォルト転送として使用されます。
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)