답변:
원래 디렉토리에서 최신 파일 만 업데이트하거나 대상에 이미 존재하는 모든 파일을 건너 뛰 려면을 사용 rsync
하고 전달 하십시오 .-u
--ignore-existing
rsync -au /local/directory/ host:/remote/directory/
rsync -a --ignore-existing /local/directory/ host:/remote/directory/
( /
소스 측에서 : rsync
생성 하지 않으면 참고하십시오 /remote/directory/directory
.)
--ignore-existing
교체하지 않고 추가하면 어떤 데이터 손실이 보입니까?
rsync
쉽게 사용할 수 없는 경우에는 도움이되지 않습니다 .... (Win32-OpenSSH처럼)
--rsync-path
가 필요한 다른 예 입니다)
scp 는 파일에 대한 쓰기 권한이 있으면 파일을 덮어 씁니다.
즉, scp
파일에 대한 쓰기 권한을 일시적으로 제거하여 해당 파일을 효과적으로 건너 뛸 수 있습니다 (파일 소유자 인 경우).
scp -r user@server.com:/location/of/files/* /local/location/
날짜별로 새 파일 만 복사 할 수 있습니다. 사용하다find
scp `find /data/*.gz -type f -mtime +7` USER@SERVER:/backup/
대상 파일 내용을 읽기 전용으로 만들 수있는 경우 :
find . -type f -exec chmod a-w '{}' \;
실행하기 전에 scp
(기존 파일을 불평하고 건너 뜁니다).
그리고 나중에 다시 변경하여 chmod +w
umask 기반 값을 얻습니다. 파일에 umask에 따라 쓰기 권한이없는 경우 복원 할 수 있도록 권한을 저장해야합니다.
(Gilles의 답변은 기존 파일이 최신 파일 인 경우 덮어 쓰고, 그 방법으로 귀중한 데이터를 잃어 버렸습니다. 왜 잘못되고 해로운 답변이 많은 투표를했는지 이해가되지 않습니다).
rsync --ignore-existing
데이터를 잃어 버렸습니까?
find: missing argument to '-exec'
이 명령을 사용 하여 오류가 발생 했으며 대신 다음을 사용해야했습니다 find . -type f -exec chmod a-w {} \;
. 내 리눅스는 나쁘다, ymmv.
find . -type f -exec chmod a-w {} \;
내 경우에는 내가 사용하지 수, 유사한 작업을했다 rsync
, csync
내 기억은 SFTP을 가지고 있기 때문에, 또는 FUSE. rsync
파일의 날짜와 시간을 변경할 수 없습니다. 같은 다른 유틸리티 (예 csync
:)에서 다른 오류가 표시되었습니다. " 임시 파일을 만들 수 없습니다 .
스토리지 서버에 액세스 할 수있는 경우 여기에서 데몬으로 설치 openssh-server
하거나 시작 rsync
하십시오.
제 경우에는-나는 이것을 할 수 없었으며 해결책은 lftp입니다 . lftp
의 동기화 사용법은 다음과 같습니다.
lftp -c "open -u login,password sftp://sft.domain.tld/; \
mirror -c --verbose=9 -e -R -L /srs/folder /rem/folder"
/src/folder
-는 내 PC의 폴더 /rem/folder
입니다 sftp://sft.domain.tld/rem/folder
.
링크를 통해 매뉴얼 페이지를 찾을 수 있습니다 : http://lftp.yar.ru/lftp-man.html
scp
파일을 덮어 쓰고 그 작업을 중지하는 스위치는 없지만, 파일을 복사하고 scp를 수행 한 다음 기존 파일을 다시 복사 할 수 있습니다. 예 :
기존 파일을 모두 복사
mkdir original_files ; cp -r * original_files/
scp를 사용하여 모든 내용 복사
scp -r user@server:dir/* ./
scp가 작성한 것 위에 원본 파일을 복사하십시오.
cp -r original_files/* ./
이를 달성하는 또 다른 방법 ls
은 대상 폴더 에서 수행하는 것 입니다.
원격 대상 폴더에서 :
ls | awk '{print "mv " $1 " ../copied_data/"}' > mv_copied_data
scp mv_copied_data user@source.server.com:/path/to/source/folder
소스에서 :
cd /path/to/source/folder
chmod 777 mv_copied_data
./mv_copied_data
목적지에서 :
scp -r user@source.server.com:/path/to/source/folder /path/to/destination/foldeer
-
>
공백 줄 바꿈이나 다른 특수 문자 가 포함되어 있으면 답이 위험합니다 . 3. 파이썬 스크립트에서 for-loop를 하드 코딩하십시오. 런타임에 프로그램을 생성하는 것은 많은 이유로 어렵고 까다 롭습니다 (전문 프로그래머가 수행하더라도). 쉘 스크립트를 생성하는 것은 더 나쁘다-끔찍한 생각.