从文件复制文件夹,但从文件复制子文件夹
Copying folders from file except subfolders from file
我想复制一些目录和文件。我列出了它们(绝对路径),但其中一些包含我不想要的文件夹(不包括也具有绝对路径的文件夹)。我只想复制 include 和更深层次的(没有在 exclude 中提到的 files/folders)但是这个,以及我制作的其他版本似乎并不 运行 好。
rsync -rz --exclude-from="$exclude" --include-from="$include" . $repository_path
假设这就是文件结构
文件包含有两行:
/a
/b
文件排除:
/a/aa
所需的输出:
让我们用你的文件结构来钻探它。
首先,我们创建 testsync 目录以在其中播放:
mkdir testsync && cd testsync
mkdir -p a/aa/whatever b/bb c/whatever c/noneed
touch a/file.txt a/picture.jpg b/bb/morefiles.txt b/txt.txt
让我们用 tree
检查一下:
.
├── a
│ ├── aa
│ │ └── whatever
│ ├── file.txt
│ └── picture.jpg
├── b
│ ├── bb
│ │ └── morefiles.txt
│ └── txt.txt
└── c
├── noneed
└── whatever
我们创建 include.dat
文件,内容为:
- /a/aa/*
+ /
+ /a
+ /a/***
+ /b
+ /b/***
- *
INCLUDE/EXCLUDE PATTERN RULES
.
部分手册 (man rsync
) 中有关 include/exclude 文件语法的更多信息
您必须将每个目录包含在其祖先目录中,以便同步。这就是为什么包含 /
和 /a
以及 /a/***
(三个星号表示其中所有目录内容)的原因
我们在 testsync 之外创建另一个目录:targetsync
和 test:
rsync -az --include-from=include.dat ~/testsync/ ~/targetsync/
现在当我们进入targetsync
目录并使用tree
获取图片时:
.
├── a
│ ├── aa
│ ├── file.txt
│ └── picture.jpg
└── b
├── bb
│ └── morefiles.txt
└── txt.txt
我想复制一些目录和文件。我列出了它们(绝对路径),但其中一些包含我不想要的文件夹(不包括也具有绝对路径的文件夹)。我只想复制 include 和更深层次的(没有在 exclude 中提到的 files/folders)但是这个,以及我制作的其他版本似乎并不 运行 好。
rsync -rz --exclude-from="$exclude" --include-from="$include" . $repository_path
假设这就是文件结构
文件包含有两行:
/a
/b
文件排除:
/a/aa
所需的输出:
让我们用你的文件结构来钻探它。 首先,我们创建 testsync 目录以在其中播放:
mkdir testsync && cd testsync
mkdir -p a/aa/whatever b/bb c/whatever c/noneed
touch a/file.txt a/picture.jpg b/bb/morefiles.txt b/txt.txt
让我们用 tree
检查一下:
.
├── a
│ ├── aa
│ │ └── whatever
│ ├── file.txt
│ └── picture.jpg
├── b
│ ├── bb
│ │ └── morefiles.txt
│ └── txt.txt
└── c
├── noneed
└── whatever
我们创建 include.dat
文件,内容为:
- /a/aa/*
+ /
+ /a
+ /a/***
+ /b
+ /b/***
- *
INCLUDE/EXCLUDE PATTERN RULES
.
man rsync
) 中有关 include/exclude 文件语法的更多信息
您必须将每个目录包含在其祖先目录中,以便同步。这就是为什么包含 /
和 /a
以及 /a/***
(三个星号表示其中所有目录内容)的原因
我们在 testsync 之外创建另一个目录:targetsync
和 test:
rsync -az --include-from=include.dat ~/testsync/ ~/targetsync/
现在当我们进入targetsync
目录并使用tree
获取图片时:
.
├── a
│ ├── aa
│ ├── file.txt
│ └── picture.jpg
└── b
├── bb
│ └── morefiles.txt
└── txt.txt