원격 위치에서 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)