리눅스가 robocopy와 동등합니까?


34

재밌습니다. 리눅스 명령 줄 도구가 Windows 도구보다 훨씬 뛰어난 방법이 많이 있지만, 그와 동등한 도구robocopy 입니다. Robocopy는보다 다재다능 cp하며 Linux 도구로 원하는 작업을 수행하는 방법을 알 수 없습니다.

구체적인 유스 케이스는 대부분 비슷한 파일을 가진 두 개의 디렉토리가 있지만 하나는 새로운 소스 파일을 가지고 있고 다른 하나는 다른 디렉토리에없는 컨텐츠 파일을 가지고 있으며 아마도 새로운 소스 파일 (웹 사이트의 경우)을 가지고 있다는 것입니다. 후자의 디렉토리에서 이전의 파일을 복사하여 새 컨텐츠 파일 등을 추가하지만 대상 디렉토리의 최신 파일을 덮어 쓰지 않습니다.

나는 30 분 동안 Linux 에서이 작업을 수행하는 방법을 알아 내려고 시도하고 bash 스크립팅이나 내가 원하는 것을해야 할 일을 배워야한다고 결정한 다음 robocopy를 사용할 수 있음을 깨달았습니다. 다른 요구 사항도있었습니다. 기본적으로 Python (Django) 웹 사이트를 SVN 저장소에서 Git 저장소로 변환하고 있었고 SVN에 커밋되지 않은 변경 사항이 없는지 확인하고 싶었습니다. 그러나 .svn디렉토리와 .pyc컴파일 된 Python 파일 을 조건부로 제외하고 싶었습니다 . 다음 robocopy 명령은 내가 원하는 것을 정확하게 수행합니다.

robocopy source destination /XO /E /XD .svn /XF *.pyc

Linux에서 Robocopy에 해당하는 것이 있습니까? rsync간단히 살펴 보았지만 폴더를 동기화하기 전에 rsync 서버를 설정 해야하는 것처럼 보였습니다.


1
rsync 서버를 설정할 필요가 없습니다. ssh를 통한 rsync는 서버 모드에서 원격 컴퓨터에서 rsync를 자동으로 실행합니다 (해당 연결에 대해서만 사용되며 자신의 계정으로 실행되며 완료되면 자동으로 종료 됨). .
CesarB

"…하지만 폴더를 동기화하기 전에 rsync 서버를 설정해야 할 것 같습니다."몇 년 동안 Rsync를 사용해 왔으며 공식 Rsync 서버를 설정 한 적이 없었습니다. 실제로 macOS의 많은 동기화 / 백업 도구는 Carbon Copy Cloner 및 SuperDuper와 같은 서버를 설정할 필요없이 Rsync를 핵심으로 사용합니다!
JakeGould

답변:


38

rsync가 확실히 당신이 추구하는 것 같습니다. 한 시스템에서 다른 시스템으로 파일을 복사하기 위해 'rsync 서버'를 설정할 필요가 없습니다. Rsync는 대부분의 Linux 상자에서 이미 활성화 한 SFTP (SSH 파일 전송)를 통한 파일 복사를 지원합니다 (수동으로 비활성화하지 않은 경우).

자세한 내용 은 rsync 를 사용하는 시스템에서 Lifehacker 's Mirror 파일 을 참조하십시오.

사무실에서 집으로, 로컬 네트워크의 컴퓨터간에 또는 컴퓨터에서 웹 서버로 인터넷을 통해 데이터를 백업하거나 파일을 안전하게 배포하거나 작업 문서를 미러링하려는 경우 rsync를 사용하여 작업을 완료 할 수 있습니다. 오늘 rsync를 사용하여 명령 줄에서 보안 연결을 통해 Mac과 PC간에 폴더를 미러링합니다.

Rsync는 무료이며 (음성 에서처럼) 크로스 플랫폼으로 운영 체제 (Windows / Cygwin, Mac OS, Linux)간에 파일을 동기화합니다. 그것은 ssh를 통해 작동하므로 암호화되고 안전합니다. FTP는 달리 그건 증가 그렇게 만 부품변경 파일이 전송 되지 전체 파일 이 스피디 곤잘레스처럼 이동하게하는; 그리고 명령 행이라는 사실은 스크립트 가능하고 쉽게 자동화 할 수있게합니다.


rsync 매뉴얼 페이지를 읽으십시오-ssh (명시적인 rsync 서버 없음)를 사용하려면 "-e ssh"를 사용하십시오
Doug Harris

1
rsync는 최고입니다! user@host.com : / blah /와 같은 경로가 자동으로 사용하므로 -e를 사용할 필요가 없습니다.
How-To Geek

음, 멋지다. 따라서 기본적으로 scp비슷한 구문을 사용 하여 ssh를 통해 전송할 수 있습니까? 실제로 한 컴퓨터에서 파일을 전송하려고 시도했지만 알아두면 좋습니다.
Ibrahim

1
불행히도이 답변은 완전히 정확하지는 않습니다. SSH는 사용하지만 SFTP는 사용하지 않습니다. 대신, rsync 프로토콜을 사용하여 원격 rsync 인스턴스와 직접 통신합니다.
Daniel B

15

rsync는 robocopy와 같은 동일한 시스템의 한 디렉토리에서 다른 디렉토리로 파일을 복사합니다. 다음은 robocopy 명령과 동일한 rsync 명령입니다.

rsync -auv --exclude '.svn' --exclude '*.pyc' source destination

소스를 대상에 재귀 적으로 복사하고 '.svn'및 '* .pyc'디렉토리 / 파일뿐만 아니라 이전 파일도 제외합니다.


단일 스레드 방식으로 수행되지 않는 한 스토리지 솔루션의 간접적 인 양에 따라 5 배 이상의 성능 저하가 발생할 수 있습니다.
Mikhail

소스에서 파일을 삭제하면 대상과 동기화되지 않습니다.
Jirong Hu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.