我有两个文件夹,我们称它们为A和B.两个文件夹下面都有一个文件夹结构,这是相同的。说A有文件夹1,2,3,4和5.B有文件夹1,2,3,4和5.A的所有子文件夹中都有各种文件(例如/A/1/file.txt / A /2/anotherfile.txt)。同样适用于子文件夹的子文件夹,因此树很深。
现在,我可以在所有B:s文件夹和子文件夹中创建硬链接吗?这样两个树结构看起来都一样,所有文件夹和子文件夹都包含相同的文件。那么,硬链接就是。
cp -l A到B的所有文件
答案 0 :(得分:2)
在bash
4中,您可以编写一个简单的循环,如
cd A
shopt -s globstar
for d in **/; do
mkdir -p "B/$d"
for f in "$d"; do
[[ -f $f ]] && cp -l "$f" "B/$f"
done
done
答案 1 :(得分:1)
使用rsync
:
$ rsync -a --link-dest=../A A/ B
示例:
# Optionally, get rid of your destination
$ rm -rf B
$ find
.
./A
./A/2
./A/2/foo
./A/1
./A/1/foo
# If the argument to --link-dest is relative, it is relative
# to the target directory which is B in this case, hence the ../A
$ rsync -a --link-dest=../A A/ B
$ find
.
./B
./B/2
./B/2/foo
./B/1
./B/1/foo
./A
./A/2
./A/2/foo
./A/1
./A/1/foo
# Notice the identical inodes
$ ls -1i {A,B}/{1,2}/foo
349408 A/1/foo
349409 A/2/foo
349408 B/1/foo
349409 B/2/foo