![Rsync: 여러 파일과 디렉터리를 빠르게 제외할 수 있는 방법이 있습니까?](https://linux55.com/image/164060/Rsync%3A%20%EC%97%AC%EB%9F%AC%20%ED%8C%8C%EC%9D%BC%EA%B3%BC%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EB%B9%A0%EB%A5%B4%EA%B2%8C%20%EC%A0%9C%EC%99%B8%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
rsync를 사용하여 여러 파일과 디렉터리를 빠르게 제외하는 방법이 있습니까?
아래는 내 코드입니다.
rsync -avzh . blabla@blabla:~/ --exclude=__pycache__ --exclude=checkpoints --exclude=logs --exclude=.git --exclude=plot
각 파일(디렉토리)마다 명시적으로 선언해야 합니다. 너무 긴 것 같아
답변1
rsync
문서 (참고자료 참조 man rsync
) --exclude-from
에는 파일에서 제외 목록을 지정할 수 있는 매개변수가 있습니다.
/
제외 예시 세트와 관련하여 디렉토리 뒤에는 지정되지 않은 파일이나 디렉토리가 아닌 디렉토리임을 표시 해야 하며 , 홈 디렉토리 자체에 있는 디렉토리는 /
다른 디렉토리와 동일하지 않도록 접두사를 붙여야 합니다. 일치하지 않습니다.
제외 파일에서는 다음과 같이 나열될 수 있습니다.
# Directories found anywhere
__pycache__/
checkpoints/
logs/
plot/
# Directories found only in HOME
/.git/
답변2
을 사용하는 경우 bash
다음을 사용할 수 있습니다.버팀대 확장--exclude=xxx
여러 옵션 으로 확장됩니다 .
rsync -avzh --exclude={__pycache__,checkpoints,logs,.git,plot} . blabla@blabla:~/
답변3
제외하려는 모든 가능한 디렉터리/파일과 일치하는 패턴을 공식화할 수 없는 한, 제가 생각할 수 있는 유일한 다른 방법은 --exclude-from=filename
.
패턴을 배열( , 또는 등 zsh
이 기능을 지원하는 셸 )에 저장할 수도 있습니다. 이는 스크립트를 작성할 때 유용할 수 있습니다.bash
ksh
yash
exclude=( __pycache__ checkpoints logs .git plot )
for pattern in "${exclude[@]}"; do
exclude=( "${exclude[@]:1}" --exclude="$pattern" )
done
rsync --archive --verbose --compress --human-readable \
"${exclude[@]}" \
. blabla@blabla:
또는 위치 인수를 사용하십시오(타이핑이 적고 모든 POSIX 셸에 이식 가능).
set -- __pycache__ checkpoints logs .git plot
for pattern do
set -- "$@" --exclude="$pattern"
shift
done
rsync --archive --verbose --compress --human-readable \
"$@" \
. blabla@blabla: