scp를 사용하여 폴더에 최신 파일을 다운로드하는 방법은 무엇입니까?


10

특정 디렉토리의 최신 (최신) 파일을 로컬 디렉토리로 다운로드하기 위해 scp 전송을 실행하고 싶습니다.

이 같은:

  • 출처 :root@rimmer.sk:/home/rimmer/backups/
  • 목적지 :/home/rimmer/backups/

에서 최신 파일 만 가져 오는 동안 파일이 전부는 아닙니다 backups.

답변:


12

변수가 server있고 dir정의되어 있다고 가정하면 할 수 있습니다

$ dir="~"
$ server="user@server.com"
$ scp $server:$dir/$(ssh $server 'ls -t $dir | head -1') .

먼저 최신 파일을 찾은 다음 복사하십시오.

참고 : 나는 바보를 확인하지 않았습니다 (예 : 최신 항목이 폴더 임)


그것이 scp하지 않는 디렉토리라면. 를 사용해야 scp -r합니다.
slm

@slm 맞지만 복사하지 않을 수도 있습니다.
Bernhard

는 IF scp가져 오기의 그것은 처음부터 복사를 다시 시작해야합니다 중단, rsync중지 된 부분부터 다시 시작할 수 있습니다.
slm

bash의 경우 인수에서 작은 따옴표를 큰 따옴표로 바꿔야했습니다 ssh.
Johannes Bittner

1
다음을 수행하여 첫 번째 $ dir을 제거 할 수 있습니다 ( /*두 번째 $ dir의 끝에 a 를 추가 함 ).scp $server:$(ssh $server 'ls -t $dir/* | head -1') .
Jesse

1

scp소스에서 대상으로 파일을 맹목적으로 복사한다는 의미에서 바보입니다. 파일을 복사하는 데보다 지능적인 것을 원한다면과 같은 도구를 사용해야합니다 rsync.

$ rsync -avz root@rimmer.sk:'$(find /home/rimmer/backups/ -ctime -1)' /home/rimmer/backups/

마지막 날 rimmer.sk의 backups 디렉토리 (-ctime -1)에서 누락되었거나 변경된 파일 만 로컬 백업 디렉토리로 복사합니다.

-ctime n
   File's  status  was last changed n*24 hours ago.  See the comments for 
   -atime to understand how rounding affects the interpretation of file 
   status change times.

참고 문헌


rsync의 문제는 동일합니다. 2 일 동안 오프라인 상태 였다면 하루 종일 모든 백업을 복사하려고하는데 전혀 필요하지 않으며 용량이 큽니다.
Richard Rodriguez

@RichardRodriguez-알겠습니다. 질문을 업데이트하고 이후의 내용을 구체적으로 설명하십시오.
slm

2
@ slm : 나는 그 질문이 옳다고 생각합니다. 디렉토리에 최신 파일을 다운로드하고 싶습니다. 그것에 대해 더 설명 할 수 있습니까? :)
Richard Rodriguez

@RichardRodriguez-이 디렉토리에 어떤 파일이 있습니까? 샘플 목록이 도움이 될 것입니다.
slm

1
왜 다운 투표?
slm

0

파티에 약간 늦었지만 아마도 ssh 및 rsync가있는 솔루션은 다음과 같이 작동합니다.

source_host="yourhost.com"
source_dir="/a/dir/on/yourhost.com/"
target_dir="/the/dir/where/last_backup/will/be/placed"
last_backup=$(ssh user@${source_host} "ls -t ${source_dir} | head -1")
if [ "${last_backup}" == "" ]; then
    echo "ERROR: didn't find a backup, cannot continue!"
else
    echo "the last backup is: ${last_backup}"
    rsync -avzh user@${source_host}:${source_dir}/${last_backup} ${target_dir}
fi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.