분할 출력을 sftp로 전달하는 방법은 무엇입니까?

분할 출력을 sftp로 전달하는 방법은 무엇입니까?

내 서버에 디스크 공간이 부족합니다. 일부 테라바이트 크기의 디렉토리를 장기 아카이브로 이동하고 싶습니다. 선호하는 파일 크기가 16GB인 테이프 로봇입니다. 그래서 tar 아카이브를 16GB 부분으로 나누고 싶습니다.

tar -czpv mydir | split -d - a 4 -b $SplitBlockSize - mydir.gz.tar

LT Archive Server를 통해 접근 가능합니다 sftp. 로컬에 저장 split하지 않고 출력을 전달할 수 있습니까 ?sftp

답변1

물론 를 사용할 수 있습니다 sshfs. sftp이러한 파일을 보내려는 방향을 올바르게 구성했다고 가정하면 다음 명령을 사용하여 로컬 디렉터리를 원격 서버에 매핑할 수 있습니다.

$ mkdir remote
$ sshfs user@server:/path/to/dir remote

그런 다음 분할 파일을 매핑된 디렉터리에 쓰도록 명령을 조정할 수 있습니다.

$ tar -czpv mydir | split -d -a 4 -b $SplitBlockSize - remote/mydir.gz.tar

--filter귀하의 경우에는 옵션을 사용하는 것이 더 나은 해결책이라고 생각합니다 split. man페이지 에서 split-

--filter=COMMAND
       write to shell COMMAND; file name is $FILE

이 방법

$ tar -czpv mydir | split -d -a 4 -b $SplitBlockSize --filter 'ssh user@remote "cat >$FILE"' - mydir.gz.tar

ssh파일은 원격 서버 에 직접 기록됩니다 . 아직 설정하지 않았다면 공개 키 인증을 설정하는 것이 좋습니다. 그렇지 않으면 전송하는 모든 파일에 비밀번호를 입력해야 합니다. 귀하의 경우에는 TB당 64번입니다. 전송에 오랜 시간이 걸릴 것으로 예상되는 경우 nohup다시 시작해야 할 가능성을 줄이기 위해 이 방법을 사용하는 것이 좋습니다.

관련 정보