내 파일 시스템은 다음과 같습니다.
원천/
folder1/
subfolder/
contents
other_subfolders
file1
file2
folder2/
subfolder/
contents
other_subfolders
file1
file2
folder3/
subfolder/
contents
other_subfolders
file1
file2
file1
file2
내가 복사하고 싶은 거의 모든 것은 이것이다:
folder1/
subfolder/
contents
folder2/
subfolder/
contents
folder3/
subfolder/
contents
즉, 난 그냥 계속 갖고 싶어
- 폴더 구조
- 하위 폴더 및 해당 내용 복사
- 하위 폴더 외부의 파일이나 하위 폴더 외부의 다른 폴더를 무시합니다.
현재 나는 노력하고 있습니다 :
$cd destination
$rsync -atvr --include="*/subfolder/" --exclude="*" source/ .
넣어서 --exclude="*"
포함에 넣은 것, 즉 */subfolder/
소스의 최상위 폴더 안에 있는 하위 폴더라는 폴더를 제외한 모든 것을 제외하고 싶습니다.
그러나 파일은 복사되지 않습니다. 왜? 내가 무엇을 놓치고 있나요?
나도 시도했다
$cd destination
$rsync -atvr --include="*/subfolder/" --exclude="*/*" source/ .
하지만 이렇게 하면:
folder1/
subfolder/
folder2/
subfolder/
folder3/
subfolder/
file1
file2
즉, 파일을 원본(외부 폴더)에 유지하고 필요한 하위 폴더를 생성하되 해당 내용을 복사하지 마십시오.
편집: Siva의 요청에 따라 퍼팅 후rsync -av --include='/' --include='/subfolder**' --exclude='*' source/ .
나는 얻다:
시스템에 접속하세요:
1) SSH 키를 사용하지 않는 경우 비밀번호 프롬프트에 TACC 비밀번호를 입력하세요. 2) TACC 토큰 프롬프트에 6자리 코드를 입력하고 를 입력하세요.
Password:
TACC Token Code:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "C.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "C.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "C.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "C.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "C.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "C.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "C.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "C.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
receiving incremental file list
./
sent 59 bytes received 104 bytes 10.52 bytes/sec
total size is 3,242 speedup is 19.89
하지만 약속합니다. 이 모든 경고는 현재 문제와 관련이 없으며 어떤 방식(ssh, scp, rsync, ...)으로 서버에 액세스하려고 할 때마다 팝업됩니다.
답변1
복사할 소스 파일 세트를 지정하기 위해 상대 경로를 사용하면 --include
잠재적인 복잡함을 피할 수 있습니다.--exclude
상상하다
최상위 디렉터리에 샘플 디렉터리와 파일 구조를 만듭니다 src
. 선택한 콘텐츠를 최상위 디렉터리에 복사합니다.dst
mkdir -p src/folder{1,2,3}/{subfolder,other_subfolders} dst
touch src/folder{1,2,3}/subfolder/contents src/{folder{1,2,3}/,}file{1,2}
find src | LC_ALL=C sort
rsync --dry-run -avR src/./folder*/*/* dst/
산출(에서 rsync
)
sending incremental file list
folder1/
folder1/subfolder/
folder1/subfolder/contents
folder2/
folder2/subfolder/
folder2/subfolder/contents
folder3/
folder3/subfolder/
folder3/subfolder/contents
/./
소스 경로의 나머지 부분이 대상에서 사용될 지점을 표시합니다 . --dry-run
선택한 작업을 수행하려면 삭제하세요 .
답변2
남성의 경우:
패턴에 /(후행 /는 계산되지 않음)가 포함되어 있으면 전체 경로 이름과 일치합니다.주요 디렉토리 포함.
다음과 같이 시도해보세요.
rsync -av --include='/' --include='/subfolder**' --exclude='*' source/ destination/