내 서버에 디스크 공간이 부족합니다. 일부 테라바이트 크기의 디렉토리를 장기 아카이브로 이동하고 싶습니다. 선호하는 파일 크기가 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
다시 시작해야 할 가능성을 줄이기 위해 이 방법을 사용하는 것이 좋습니다.