Bash 通过将文件复制到子文件夹防止CP硬链接
我有一个这样的文件夹结构Bash 通过将文件复制到子文件夹防止CP硬链接,bash,unix,Bash,Unix,我有一个这样的文件夹结构 a/ -b/ -c.txt -d.txt -backups/ 我想将文件夹a的内容移动到backups中,因此文件夹结构如下 a/ -b/ -c.txt -d.txt -backups/ -b/ -c.txt -d.txt 以下是我迄今为止使用的命令 for d in a/*/ ; do mkdir -p ${d}backups/ cp -ra ${d}* backups done 我进行文件夹备份,然后尝试将内容复制到ba
a/
-b/
-c.txt
-d.txt
-backups/
我想将文件夹a
的内容移动到backups
中,因此文件夹结构如下
a/
-b/
-c.txt
-d.txt
-backups/
-b/
-c.txt
-d.txt
以下是我迄今为止使用的命令
for d in a/*/ ; do
mkdir -p ${d}backups/
cp -ra ${d}* backups
done
我进行文件夹备份,然后尝试将内容复制到backups
文件夹中。但是,我得到一个错误:CP硬链接无法将文件夹复制到自身。我该怎么做
谢谢它正在尝试将“备份”复制到“备份”中,因此您需要确保从a/*/模式中排除“备份”
您可能应该使用“find”来查找具有给定模式的文件,并排除“backup”目录。使用“查找”,您可以执行“-不命名备份”
使能
通过shopt-s extglob
并执行cp-r!(备份/)备份
。结果如下:
a
├── b
├── backups
│ ├── b
│ ├── c.txt
│ └── d.txt
├── c.txt
└── d.txt
3 directories, 4 files
我知道rsync可以排除文件,但在模式中我该怎么做呢?看:是的,我以前不知道extglob,但它非常酷!很好的快速修复。
a
├── b
├── backups
│ ├── b
│ ├── c.txt
│ └── d.txt
├── c.txt
└── d.txt
3 directories, 4 files