링크를 따르거나 거대한 tar 파일을 생성하지 않고 재귀 scp를 사용하시나요?

링크를 따르거나 거대한 tar 파일을 생성하지 않고 재귀 scp를 사용하시나요?

그래서 원격 파일 서버(다른 상태)에서 재귀 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.

관련 정보