그래서 SSH 파일 서버를 사용하여 다양한 구성 파일을 백업하는 스크립트를 작성하려고 하는데 최선의 방법을 모르겠습니다. 두 시스템의 절대 파일 경로로 파일을 채우고 병렬 처리나 다른 수단을 사용하여 직접 수행할 수 있다면 좋을 것입니다.Parallel에는 단일 디렉터리에 대한 스크립트가 있습니다., 하지만 여러 위치로 확장하고 싶습니다.
예를 들어:
/home/$USER/.bashrc --> remoteuser@remoteIP:/home/remoteuser/backup/.bashrc
/home/$USER/.config/i3/config --> remoteuser@remoteIP:/home/remoteuser/backup/.config/i3/config
파일 수가 많은 경우 서버에 실제로 최신 복사본이 있으면 반대 방향으로 작업하세요.
remoteuser@remoteIP:/home/remoteuser/backup/.bashrc --> /home/$USER/.bashrc
이 두 명령을 사용하여 파일에 대해 이 작업을 효과적으로 수행할 수 있지만 두 번 로그인해야 합니다.
rsync -vrut -e 'ssh -p portnumber' /home/$USER/.bashrc remoteuser@remoteIP:/home/remoteuser/backup/.bashrc
rsync -vrut -e 'ssh -p portnumber' remoteuser@remoteIP:/home/remoteuser/backup/.bashrc /home/$USER/.bashrc
답변1
첫 번째 경우 rsync는 여러 소스 피연산자를 허용하고-R
/ 옵션은 --relative
경로를 유지합니다, 그래서
rsync -R backup/.bashrc backup/.config/i3/config dest:/home/remoteuser
해결하는 데 도움이 되어야 합니다. --no-implied-dirs
이 옵션은 구조가 더 복잡할 때 공유 경로를 건너뛰는 데 사용할 수 있습니다.
-R, --relative use relative path names --no-implied-dirs don't send implied dirs with --relative
반대 방향의 경우 여러 원격 소스로 동일한 작업을 수행할 수 있으며 rsync는 동일한 서버에 별도로 연결하지 않을 만큼 똑똑해야 합니다.
-L 옵션과 단일 소스를 사용하여 원하는 파일만 포함된 심볼릭 링크로 가득 찬 가짜 디렉터리 구조를 만드는 경우가 종종 있습니다.
반면에 그것은언제나방향성: 단일 명령을 사용하여 양쪽 모두 최신 버전을 얻을 수 없으므로 두 개의 명령이 필요합니다. 공유 SSH 제어 소켓을 사용하여 동일한 SSH 연결을 통해 실행할 수 있으므로 실제 로그인은 하나만 있습니다. ControlMaster
SSH 구성 문서에서 추가 로그인을 참조하세요.