저는 FTP 프로토콜과 명령줄만 사용하여 Dropbox/rsync와 유사한 기능을 에뮬레이트할 수 있는 솔루션을 찾고 있습니다.
일반적인 문제는 매우 제한된 Linux(실제로는 NAS)에서 실행해야 하므로 GUI가 없기 때문에 복잡한 솔루션(실행할 리소스가 충분하지 않음) 및/또는 GUI 유틸리티를 설치/사용할 수 없다는 것입니다. 거기. SSH는 이 NAS에서도 약하게 작동하며 대상 중 하나에는 존재하지 않습니다.
source
나에게 필요한 것은 CRON을 통해 주기적으로 실행하여 과 가 destination
동일한지 확인할 수 있는 명령줄(bash) 스크립트 또는 프로그램이 있는 것입니다 .
- 양측의 모든 파일은 양측 모두에게 복사되며,
- 동일한 이름의 파일이 2개 존재하는 경우 최신 버전의 파일을 양쪽에 복사한 후,
- 한쪽에서 다른 쪽에서 누락된 모든 파일을 삭제합니다.
물론 이 솔루션이 성공적으로 작동하려면 소스와 대상 모두의 모든 하위 폴더에 대한 반복을 지원해야 합니다. 양쪽에 큰 디렉터리 구조가 있게 됩니다.
많은 백업 솔루션을 시도했지만 대부분 다음 이유 중 하나로 인해 실패했습니다.
- 양측의 정확한 복사본을 생성하고 증분 백업을 제공할 수 있는 방법은 없습니다.
- 매우 제한된 Linux 배포판에서는 명령줄에서 직접 실행할 수 없습니다.
누군가 나에게 Unison을 사용해 보라고 제안했습니다. 이것은 정말 좋아 보이지만 SSH를 사용하며 내 대상 중 하나에 SSH 연결을 설정할 수 없습니다(지원되지 않음). 즉, FTP 액세스가 사용 가능한 유일한 방법입니다.
나에게 완벽한 솔루션은 다음과 같이 실행할 수 있는 것(명령줄 또는 구성)입니다.
something.sh path/to/local/folder ftp://user:[email protected]/path/to/folder
만약 실제로 존재했다면...
답변1
lftp
명령이 있습니다 ( 백미러 mirror
도 포함 ).mirror -R
답변2
한 가지 일반적인 사실: 내가 아는 한, 프로토콜이 이를 지원하지 않기 때문에 ftp를 사용하여 원격 타임스탬프를 설정할 수 없습니다. 그러나 귀하의 경우에는 서버에 있는 것보다 새로운 데이터만 전송되고 나머지는 유지되기를 원하기 때문에 이는 괜찮습니다.
rsync
Ftp와 함께 퓨즈와 컬ftpfs를 사용할 수 있다고 생각합니다 . 먼저 ftp 파일 시스템을 로컬로 마운트합니다.
curlftpfs -o user=username:password ftp://whatever.ftp/ mountpoint/
그런 다음 rsync
일반적인 로컬 미러링 방법을 사용합니다.
rsync -azv source mountpoint/whatever/dir/
rsync는 폴더와 파일의 동기화를 미세 조정하는 다양한 옵션을 갖춘 강력한 도구입니다.
또 다른 옵션: wput
;This (내 생각에는 wget과 대응되는 것 같습니다)비교할 수 있다원격 및 로컬 타임스탬프 사용-N옵션. 또한 wput은 디렉터리를 재귀적으로 전송하므로 이것이 실제로 여러분이 찾고 있는 솔루션이라고 생각합니다. 예:
wput somedir ftp://user:[email protected]/remote/dir/
원격 서버에 "somedir/" 미러가 생성됩니다. 로컬 somedir을 수정하지 않고 명령을 다시 실행하면 더 이상 파일이 전송되지 않습니다.