특정 파일 및 하위 디렉터리만 복사하는 방법

특정 파일 및 하위 디렉터리만 복사하는 방법

안녕하세요, 다음과 같은 디렉터리가 있다고 가정해 보겠습니다.

/
    my_work
               /dir1
                    keepdir1.ddd
                    keepdir2.ddd
                    file.cfg
                    (lots of files and directories I don't want)
               /dir2
                    (same layout as dir 1)

그래서 "my_work" 디렉터리와 "dir1", "dir2" 등의 하위 디렉터리를 모두 복사하고 싶습니다. 그러나 각 항목에는 특정 파일과 특정 디렉터리만 보관하고 싶습니다. 내가 보관하는 디렉토리에는 모든 것을 재귀적으로 포함하고 싶습니다.

지금까지 시도한 내용은 다음과 같습니다. 그러나 아무 것도 복사되지 않는 것 같습니다.

rsync -rl --include-from=~/rsync_include /my_work ~/backup

rsync_include의 내용은 다음과 같습니다.

+ *file.cfg
+ *keepdir*/*
- *

답변1

중요한 정보를 제공하는 것을 잊어버리지 않았다면 다음 스크립트가 작동합니다.

#!/usr/bin/env bash

for DIR in my_work/* ; do
    mkdir -pv dest/"$DIR"
    cp -av "$DIR"/*.cfg "$DIR"/keepdir* dest/"$DIR"
done

메시지를 생성하는 적용할 수 없는 와일드카드가 포함된 샘플 출력:

dest
dest/my_work
dest/my_work/dir1
my_work/dir1/file.cfg -> dest/my_work/dir1/file.cfg
my_work/dir1/keepdir1.ddd -> dest/my_work/dir1/keepdir1.ddd
my_work/dir1/keepdir2.ddd -> dest/my_work/dir1/keepdir2.ddd
dest/my_work/dir2
my_work/dir2/file.cfg -> dest/my_work/dir2/file.cfg
cp: my_work/dir2/keepdir*: No such file or directory
dest/my_work/dir3
cp: my_work/dir3/*.cfg: No such file or directory
cp: my_work/dir3/keepdir*: No such file or directory

관련 정보