나는 이와 같은 질문이 수십억 개 있다는 것을 알고 있습니다. 하지만 나는 그것들을 많이 시도했지만 이것이 작동하도록 할 수 없었다고 확신합니다. 따라서 이것을 중복으로 표시하지 마십시오.
다음과 같은 파일 시스템이 있습니다.
1_counts/
|_________sample1/
|__________boring_file1
|__________boring_file2
|__________boring_dir1/
|__________boring_file1
|__________boring_file2
|__________dir/
|__________boring_file1
|__________boring_file2
|__________another_dir/
|__________file1
|__________file2
|__________file3
|__________boring_dir/
|__________boring_file
|__________boring_file.RData
여러 개의 "샘플" 디렉터리가 있습니다.
에서 파일 1, 2, 3을 동기화해야 합니다 another_dir/
. 파일 구조를 유지하고 싶습니다(대상에 하위/디렉토리가 없음). 모든 것을 복사하고 싶지는 않습니다.
먼저 모든 것을 다음 위치에 넣어 보았습니다 dir/another_dir
.
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/" \
--exclude="*" 1_counts/* .
메시지가 포함된 파일은 반환되지 않습니다 [sender] hiding directory sample_1 because of pattern *
. 같은
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*" 1_counts/* .
이 옵션(여기서는솔루션 1)는 다음의 모든 항목을 검색했습니다 dir/another_dir/
.
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*/*" 1_counts/* .
솔직히 말해서 나는 그것을 짐작했다. 왜 제외해야 하는지 모르겠습니다 */*
.
내가 시도하면
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/" \
--exclude="*/*" 1_counts/* .
dir/another_dir
목차 만 알 수 있고 내용은 알 수 없습니다. 예상대로.
만약 내가한다면
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/*" \
--exclude="*/*" 1_counts/* .
dir/
내용은 없고 목차 만 나옵니다 . 나는 그것이 예상되는 것 같아요 (두 번째 답변여기another_dir
) 하지만 왜 내가 미스터리를 얻지 못하는지 혼란스러워요 .
그래도, 이제 솔루션 1을 사용하여 1_counts/sample1/dir/another_dir
. 이제 Boring_file.RData 및 dir/another_dir/boring_dir
.
나는 노력했다
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--exclude="*/*" 1_counts/* .
이것은 작동하지 않습니다. 모든 것이 여전히 포함되어 있습니다. 경로와 관련이 있다고 생각해서 저도 시도해 보았습니다.
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="dir/another_dir/*.RData" \
--exclude="dir/another_dir/boring_dir/" \
--exclude="*/*" 1_counts/* .
아니요. 옵션이 부족하고 이 중 일부가 작동하는 이유가 무엇인지 혼란스럽습니다...
이에 대한 의견을 보내주시면 정말 감사하겠습니다.
답변1
이 시점에서 솔루션에 매우 가까워졌습니다.
rsync -r -v --dry-run --include="dir/" \
--include="dir/another_dir/***" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--exclude="*/*" 1_counts/* .
내용은 이렇습니다rsync
첫 번째 일치 패턴 사용이므로 아래의 모든 내용을 포함하면 another_dir
지루한 콘텐츠와 .RData 파일을 효과적으로 포함할 수 있습니다. 필터 규칙의 순서를 변경하면 됩니다.
rsync -r -v --dry-run --include="dir/" \
--exclude="*.RData" \
--exclude="boring_dir/" \
--include="dir/another_dir/***" \
--exclude="*/*" 1_counts/* .
순서가 중요하기 때문에사람들은 확장자별로 파일을 제외하도록 처음부터 규칙을 만듭니다., 그리고마지막으로 모든 규칙을 제외합니다..