그래서 원격 파일 서버(다른 상태)에서 재귀 scp를 수행했고 원격 웹 디렉터리에 링크의 무한 루프가 생성되었습니다.
http://www.linuxquestions.org/questions/linux-general-1/recursive-scp-wo-following-links-658857/거대한 tar 파일을 만들어 볼 수 있다고 합니다. 하지만 문제가 있습니다. 사무실에 있는 Linux 상자에서 재귀 scp를 실행하고 모든 파일을 FAT32 형식의 외부 하드 드라이브에 복사하고 있습니다(UNIX 및 Windows에서 사용할 수 있는 것이 필요하기 때문입니다). FAT32는 대용량 파일 크기를 지원하지 않습니다. 그래서 뭔가 다른 것을 시도해야 했습니다.
rsync 옵션도 있는데, 제 사무실의 리눅스 박스는 매우 원시적(igel)이라 rsync가 없습니다...
답변1
scp
하드 또는 소프트 링크를 제대로 처리하지 못하고 스트림이 압축되지 않기 때문에 큰 파일 트리를 전송하는 데 직접 사용 하지 않는 것이 좋습니다 .
나는 cpio
즉시 (해제)압축을 권장합니다:
ssh user@host "cd /path/to/files && find . | cpio -ov | bzip2 -c" | bunzip2 -c | cpio -ivd
또한 find
"파일은 4G보다 작아야 합니다"와 같은 다른 조건도 처리할 수 있습니다.
find . -size -4G | ...
cpio
보다 공간 친화적 으로 만들려면 (파일 이름의 공백을 적절하게 처리) 다음을 사용하십시오.
find . -print0 | cpio -0 -ivd | ...
답변2
또 다른 옵션은 다음 sftp -r
과 같이 사용하는 것입니다.sftp
설명서에는 다음과 같이 나와 있습니다.
업로드 및 다운로드 시 전체 디렉터리를 반복적으로 복사합니다. sftp는 트리 탐색 중에 발견된 기호 링크를 따르지 않습니다.
그래서
sftp -r source@surce_server.com:/source/dir .
정확히 당신이하고 싶은 일입니다.
답변3
보내기 전에 tar 파일을 만들 필요가 없습니다. 즉석에서 만들 수 있습니다:
cd /source/dir
tar -cf - . | ssh 'cd /destination/directory && tar -xf -'
이를 위해서는 원격 서버가 scp 연결뿐만 아니라 SSH 셸 연결도 허용해야 합니다. 이론적으로는 로컬 파일 구조와 일치하지 않는 임의의 파일 트리를 원격 측으로 보내는 것이 가능하지만 이를 수행할 수 있는 기존 도구는 없습니다.
심볼릭 링크가 문제인 경우 소스 트리가 하드 링크를 지원하는 파일 시스템(따라서 기본 Unix 파일 시스템 또는 NTFS이지만 지방이 아닙니다). 여기서는 GNU 유틸리티를 사용한다고 가정합니다.
cd /source/dir
mkdir ../regular-files-only
cp -al . ../regular-files-only
find ../regular-file-only \! -type f \! -type d -delete
sftp를 사용할 수도 있습니다. sftp -r
와 달리 심볼릭 링크는 따르지 않습니다 scp -r
.