모든 하위 디렉토리를 제외하고 rsync에 디렉토리 파일을 어떻게 포함시킬 수 있습니까?


13

우분투 시스템을 백업하고 싶은데 두 개의 파티션이 있습니다 : 하나는 /다른 하나는 입니다 /home.

백업하고 싶습니다 /. 이 크기는 크지 않기 때문에 SD 카드에 넣을 수 있으며 이미지를 갖기를 원할 정도로 응답 성이 뛰어납니다 (그래서 지금 rsync를 사용하려고합니다).

그리고 약 /home, 내가 대해 많이 나는 가능성을 포함하지 것 때문에 걱정하지 않는 것이 많은 하위 디렉토리를 가지고 있지만, 나는 그런 같은 존재에있는 파일에 대해 알아서 할 .bash_history, .bashrc, .face, 등.

에 파일을 포함하면서 모든 하위 디렉토리를 제외하고 싶습니다 /home. 어떻게하면 되나요?

--exclude "*/"작동하지 않았다. "/*/", "/**/", --include "*" --exclude */내가 원하는 걸 표시하지 않습니다. 적어도 소스 폴더를 복사하지 않고 소스 폴더를 복사했습니다.

답변:


17

이 명령을 시도하십시오 :

rsync -a -f"- */" -f"+ *" /home/user/ destination/

man rsync

-f, --filter=RULE           add a file-filtering RULE

모든 파일을 포함 *하고 디렉토리를 제외시키는 규칙*/

일반 사본을 사용하는 또 다른 방법 cp

cp /home/usr/* /destination

리디렉션을 사용하여 dirs에 대한 오류를 제거 할 수 있습니다

cp /home/usr/* /destination 2>/dev/null

이것은 디렉토리없이 집안의 파일 만 복사합니다.


/ proc 디렉토리 가상 비현실적인 파일 시스템을 가지고, 당신은 또한 당신을 / tmp와 / 실행 제외해야 백업에서 제외한다
Maythux

사물 백업에 대한 나의 원래 명령은 다음과 같습니다.rsync -r -t -p -o -g -v --progress --delete --modify-window=1 -l -H -b -s --exclude home/dinir/ --exclude media/ --exclude proc/kcore / /home/dinir/Temporal Site for Storing Backups
Dinir

/ proc, / tmp 및 / run, Check! 어쨌든 내 의견에서 볼 수 있듯이 홈 디렉토리를 제외한 전체 루트 파일 시스템을 거의 예외없이 백업해야했습니다. -f" */" -f"+ *"내 코드를 넣는 것이 안전합니까? 어쩌면 -f"- home/dinir/*/" -f"+ home/dinir/*"?
디 니르

당신은 그렇게 사용해야합니다-f"- home/dinir/*/" -f"+ home/dinir/*"
Maythux

하지만 저는 집에서 cp를 사용하는 것이 좋습니다. 훨씬 쉬워요
Maythux

3

당신이이 문제를 해결하려면 --include--exclude매개 변수, 당신은 그 순서를 변경해야합니다 : 먼저 다음, 원하는 모든 것을 포함하는 것을 제외합니다. 나는 보통이 명령으로 그것을한다 :

rsync -vazhP path/to/source path/to/dest --exclude '*/*/' --include '*'

2

기본적으로 rsync디렉토리는 복사하지 않습니다. 아마도 당신은 -a깃발을 사용하고 있습니다. 이 경우는에 따른 통지 man 페이지 , -a동일합니다은 -rlptgoD당신이 재귀하지 않으려면, 그래서 그냥 사용 -lptgoD.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.