하드 링크를 사용하여 백업을 간소화하는 가장 효과적인 방법

하드 링크를 사용하여 백업을 간소화하는 가장 효과적인 방법

동일한 컴퓨터에 대해 서로 다른 날짜의 수백 개의 백업이 포함된 백업 디스크가 있습니다. 백업은 rsync 및 하드 링크를 사용하여 수행됩니다. 즉, 파일이 변경되지 않은 경우 백업 스크립트는 이전 백업의 파일에 대한 하드 링크를 생성합니다. 따라서 파일이 전혀 변경되지 않으면 기본적으로 백업 디스크에 복사본이 있지만 각 날짜의 백업을 나타내는 각 디렉터리에 해당 파일에 대한 100개의 하드 링크가 있습니다(예: back-1, back-2, ... back-n). 합리화하고 싶다면 일부를 제거할 수 있지만 전부는 제거할 수 없습니다. back_5, back_6, ...을 제거하고 싶다고 가정해 보겠습니다 back_10(예를 들어 실제 시나리오에는 더 많은 항목이 있습니다). 그런 다음 다음을 통해 병렬화하려고 합니다.

echo back_5 back_6 back_10 | xargs -n 1 -P 0 rm -rf

몇 시간이 걸립니다. 그러면 이 작업을 수행하는 더 빠른 방법이 있습니까?

답변1

어떻게 사용할 수 있는지 모르겠습니다.매개변수이것은 전혀 느리지 않습니다. 내 맨페이지에는 -P가 ​​프로세스 수이고 -n이 인수 수라고 나와 있습니다. 특별한 값이 없으므로 -P0무시될 수 있습니다(또는 운이 좋다면 프로세스가 0개이므로 24시간 동안 아무 것도 설명되지 않습니다!). 그리고 -n1당신이구현하다(2) 각 파일 이름에 대해 이것은 대략 가장 느립니다.

이 작업을 병렬화하면 많은 이점을 얻을 수 있을 것으로 생각됩니다. 내 생각엔 그냥

$ echo filenames ... | xargs rm -rf 

충분할 것입니다. -P4원하는 경우 몇 가지 값을 시도해 볼 수 있습니다. 통과아니요명령줄 인수 수를 제한하면 호출이 최소화되고 /bin/rm디스크 캐시를 통해 순차적으로 진행될 수 있습니다.

답변2

상대적으로 작은 디렉터리를 주로 삭제하기 때문에 df에서 보고하는 숫자는 더 작습니다. 또한 파일 시스템에 따라 디렉터리 변경 사항과 파일 링크 수 변경 사항이 즉시 기록되거나 디스크에 동기화됩니다. 이는 오류 복구에 중요하므로 속도가 느립니다.

이는 실제로 링크 효율성을 입증합니다!

답변3

내 경험에 따르면 rsync+하드링크 기반 백업 속도를 높이는 가장 좋은 방법은 보유한 파일 수를 줄이는 것입니다.

작은 파일이 많으면 rsync 속도가 느려집니다.많은.

대부분 작은 파일, 대부분 읽기 전용 디렉터리가 빨간색이 되도록 데이터를 구성할 수 있다면 tar백업 스크립트 속도가 크게 향상되는 것을 볼 수 있습니다. (와 같은 도구를 사용하면 archivemount압축을 풀지 않고도 이러한 아카이브에 액세스할 수 있습니다).

백업 스크립트를 병렬화하면 도움이 되지 않을 수 있으며 백업 스크립트 속도가 느려질 수도 있습니다(예측 가능한 디스크 액세스가 더 최적임).

답변4

이 역시 하드데이터에 근거한 답변이 아닌 경험에 근거한 답변입니다.

교차 링크가 많은 유사한 트리에서 많은 파일을 삭제할 때 고아 하위 트리를 병렬로 삭제하는 것이 더 빠른 것 같습니다. 다이어그램으로 설명해 보겠습니다.

topdir1
    |-a1
    |-b1
    |-c1

topdir2
    |-a2
    |-b2
    |-c2

topdir3
    |-a3
    |-b3
    |-c3

내 생각에는 을 병렬로 삭제한 다음 계속 삭제하는 것이 병렬로 삭제하는 것보다 빠르다는 것 입니다 topdir1. topdir2(이에 대한 내 이론은 "동일한" 파일의 여러 병렬 연결 해제가 inode 링크 참조 수에 대한 경합을 유발한다는 것입니다. 그러나 이를 하드 데이터로 확인하지 않았다는 점을 강조합니다.)topdir3a1b1c1a2b2c2

for topdir in *
do
    echo "Removing $topdir..."
    for sub in "$topdir"/*; do rm -rf "$sub" & done
    wait
    rm -rf "$topdir"
done

관련 정보