한 서버에서 다른 서버로 약 300GB의 파일 전송 HDD 공간이 없기 때문에

오늘 새 서버로 전송중인 약 20 만 개의 파일이 있습니다. 나는 이전에 그렇게 큰 규모로 아무것도 한 적이 없으며, 어떻게해야하는지에 대한 조언을 원했습니다. 나는 두 Centos 6 배포판 사이에서 그것들을 옮기고 있으며, 그들은 나라의 다른 위치에 있습니다. 원본 서버에 모든 디렉토리와 파일을 하나의 거대한 타르볼로 압축하기에 충분한 HDD 공간이 없기 때문에 내 질문은 어떻게 이러한 파일을 모두 전송해야합니까? rsync? rsync를 사용하는 특별한 방법은 무엇입니까? 그것을하는 방법에 대한 모든 의견 / 제안은 훌륭 할 것입니다.

감사

편집 : 궁금해하는 사람들을 위해 이와 같은 screenrsync명령을 실행할 때 a를 사용하는 것이 좋습니다 . 특히 어리석은 일이 발생하여 rsync명령을 실행중인 서버 A에 대한 연결이 끊어진 경우 . 그런 다음 화면을 분리하고 나중에 다시 시작하십시오.



답변

그냥 사이먼의 살을 대답을 , rsync작업을위한 완벽한 도구입니다 :

   Rsync  is  a  fast  and extraordinarily versatile file copying
   tool.  It can copy locally,  to/from  another  host  over  any
   remote  shell,  or to/from a remote rsync daemon.  It offers a
   large number of options  that  control  every  aspect  of  its
   behavior  and permit very flexible specification of the set of
   files to be copied.  It is famous for its delta-transfer algo‐
   rithm,  which reduces the amount of data sent over the network
   by sending only the differences between the source  files  and
   the  existing  files in the destination.  Rsync is widely used
   for backups and mirroring and as an improved copy command  for
   everyday use.

원격 시스템에 ssh 액세스 권한이 있다고 가정하면 다음과 같이하십시오.

rsync -hrtplu path/to/local/foo user@remote.server.com:/path/to/remote/bar

이 디렉토리를 복사합니다 path/to/local/foo으로 /path/to/remote/bar원격 서버에. 이름 bar/foo이 지정된 새로운 서브 디렉토리 가 작성됩니다. 대상에 해당 이름의 디렉토리를 작성하지 않고 디렉토리 의 내용 만 복사하려면 후행 슬래시를 추가하십시오.

rsync -hrtplu path/to/local/foo/ user@remote.server.com:/path/to/remote/bar

이것은 foo/원격 디렉토리에 내용을 복사합니다 bar/.

몇 가지 관련 옵션 :

 -h,                         output numbers in a human-readable format
 -r                          recurse into directories
 -t, --times                 preserve modification times
 -p, --perms                 preserve permissions
 -l, --links                 copy symlinks as symlinks
 -u, --update                skip files that are newer on the receiver
 --delete                    delete extraneous files from dest dirs
 -z, --compress              compress file data during the transfer
 -C, --cvs-exclude           auto-ignore files in the same way CVS does
 --progress                  show progress during transfer
 --stats                     give some file-transfer stats

답변

복사 속도와 사용 가능한 대역폭에 따라 다릅니다.

네트워크 연결 상태가 좋지 않으면 테이프로 채워진 트럭의 대역폭을 고려하십시오. (읽기 : 2.5 인치 HDD를 우편으로 보내거나 직접 드라이브하십시오. 300 기가비트 드라이브를 쉽게 찾을 수 있어야합니다).

시간이 덜 중요하거나 대역폭이 충분하면 rsync가 좋습니다. 오류가 있으면 이전 파일을 다시 복사하지 않고 계속할 수 있습니다.

[편집] 복사하는 동안 데이터가 사용되면 rsync를 여러 번 실행할 수 있다는 것을 추가하지 않았습니다.

예 :
1) 사용중인 데이터. Rsync-> 모든 데이터가 복사됩니다. 시간이 좀 걸릴 수 있습니다.
2) rsync를 다시 실행하면 변경된 파일 만 복사됩니다. 이것은 빠르다.

변경 사항이 없을 때까지이 작업을 여러 번 수행하거나 복사 중에 데이터를 읽기 전용으로 만들어 스마트 / 안전한 방법으로 수행 할 수 있습니다. (예 : 공유 전용 읽기 전용 공유 세트에있는 경우 또는 데이터를 재 동기화 한 후 야간에 공유를 두 번째로 실행하는 동안 공유 전용을 설정하십시오).


답변

나는 rsync에 갈 것이다! 서버를 오프 사이트 서버에 백업하는 데 사용하고 정상적으로 작동합니다. 일반적으로 몇 MB를 복사해야하지만 며칠 동안 최대 20-30GB까지 걸리며 문제없이 작동했습니다.


답변

기가비트 연결을 사용하는 NFS를 통한 rsync는 약 10 시간이 걸렸습니다. HDD의 데이터를 복사하여 서버간에 옮기는 것이 좋습니다. 실제로 디스크의 일대일 사본을 작성해야하는 경우 dd 또는 이와 유사한 것을 사용하여 디스크의 원시 이미지를 작성하십시오. ssh (scp)를 사용하면 엄청난 오버 헤드가 발생합니다. 기가비트 연결에서 경험적으로 테스트되었습니다. rsync는 HA 또는 백업 모드에서 사용되는 두 서버간에 증분 동기화를 수행하는 데 적합합니다. 나는 추측한다.


답변

NFS 및 tar / untar를 처음 사용합니다 (이 경우 NFS는 가장 빠른 프로토콜이며, 더 많은 CPU 사용률로 네트워크 대역폭을 절약하기 위해 tar입니다)

tar cf - * | ( cd /target; tar xfp -)

다음 번에는 rsync를 사용하십시오.