it-swarm-ko.tech

대상의 기존 파일을 바꾸지 않고 scp

대상 디렉토리의 내용을 바꾸지 않고 전체 디렉토리를 동일한 이름의 디렉토리에 복사하는 방법은 무엇입니까? (대신 대상 폴더의 내용에 추가하고 싶습니다)

169
biznez

rsync를 사용하고 -u 원래 디렉토리에서 최신 파일 만 업데이트하려면 --ignore-existing 목적지에 이미 존재하는 모든 파일을 건너 뜁니다.

rsync -au /local/directory/ Host:/remote/directory/
rsync -a --ignore-existing /local/directory/ Host:/remote/directory/

(/ 소스 측 : rsync없이 /remote/directory/directory.)

scp 파일에 대한 쓰기 권한이 있으면 파일을 덮어 씁니다.

즉, 파일에 대한 쓰기 권한을 일시적으로 제거하여 scp에서 해당 파일을 효과적으로 건너 뛸 수 있습니다 (파일 소유자 인 경우).

88
Reimund

날짜별로 새 파일 만 복사 할 수 있습니다. find 사용

scp  `find /data/*.gz -type f -mtime +7` [email protected]:/backup/
12
Naks

대상 파일 내용을 읽기 전용으로 만들 수있는 경우 :

find . -type f -exec chmod a-w '{}' \;

scp를 실행하기 전에 (기존 파일을 불평하고 건너 뜁니다).

그리고 나중에 다시 변경하십시오 (chmod +w는 umask 기반 값을 가져옵니다. 파일에 umask에 따라 쓰기 권한이없는 경우 복원 할 수 있도록 권한을 저장해야합니다.

(Gilles의 답변은 기존 파일이 최신 파일 인 경우 기존 파일을 덮어 씁니다. 그런 식으로 귀중한 데이터를 잃어 버렸습니다. 왜 잘못되고 해로운 답변이 많은 투표를했는지 이해가되지 않습니다).

10
Mohad

전체 파일 묶음을 복사하려면 파일을 더 빨리 타르십시오. -k를 사용하면 대상 시스템에서 파일의 압축을 풀 때 tar가 파일을 겹쳐 쓰지 못하게됩니다.

tar -c <source-dir> | ssh <name>@<Host> 'tar -kxzf - -C <target-dir>' 
7
huembi

스토리지에 SFTP 만 있으므로 rsync, csync 또는 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

6
bolD

scp는 파일을 덮어 쓰며이를 중지시키는 스위치는 없지만, 파일을 복사하고 scp를 수행 한 다음 기존 파일을 다시 복사 할 수 있습니다. 예 :

  1. 기존 파일을 모두 복사

    mkdir original_files ; cp -r * original_files/
    
  2. Scp를 사용하여 모든 내용 복사

    scp -r [email protected]:dir/* ./
    
  3. Scp가 작성한 것 위에 원본 파일을 복사하십시오.

    cp -r original_files/* ./
    
0
A.Badger