0

好的,所以我需要创建一个文件结构的副本,但是该结构很大(数百万个文件),我正在寻找复制它的最快方法。

我目前正在使用,cp -lR "$original" "$copy"但是即使这非常慢(需要几个小时)。

我想知道是否有更快的方法可以使用?我知道,rsync --link-dest但这并没有更快,但我真的希望它更快,因为我想每小时左右创建这些快照。

另一种方法是仅将更改(我可以快速找到)复制到每个文件夹中,然后在需要释放空间时将它们“展平”(将较新的文件夹同步到较旧的文件夹中,直到达到最后一个完整的快照),但我真的宁愿每个文件夹都是它自己的完整快照。

4

3 回答 3

0

Why are you discarding link-dest? I use a script with that option and take snapshots pretty often and the performance is pretty good.

In case you reconsider, here's the script I use: https://github.com/alvaroreig/varios/blob/master/incremental_backup.sh

于 2013-07-04T17:42:36.723 回答
0

如果你已经pax安装了,你可以使用它。根据 POSIX,将其视为 tar 或 cpio,但是是标准的。

#!/bin/sh

# Move "somedir/tree" to "$odir/tree".
itree=$1
odir=$2
base_tree=$(basename "$itree")
pax -rw "$itree" -s "#$itree#$base_tree#g" "$odir"

-s replstr是一个不幸的必需品(否则你会得到 $odir/$itree),但它工作得很好,到目前为止它比 cp 对于大型结构更快。

如果您没有一个人建议的 pax,tar 当然是另一种选择。

于 2013-07-04T18:19:33.320 回答
-1

根据文件的不同,您可以通过压缩来获得性能提升:

cd "$original && tar zcf - . | (cd "$copy" && tar zxf -)

这将创建“原始”目录的压缩包,将数据发送到标准输出,然后更改为“复制”目录(必须存在)并解压缩传入的流。

对于提取,您可能需要查看进度:tar zxvf -

于 2013-07-02T15:44:55.523 回答