DennyHalim.com Asked: 2009-10-14 00:29:36 +0800 CST2009-10-14 00:29:36 +0800 CST 2009-10-14 00:29:36 +0800 CST 大文件的最快备份 772 复制文件夹包含几百兆大小的几个文件和其他几个兆小文件的最快方法是什么?(例如,/var/lib/mysql)cp 或 tar 或 rsync 或...?? backup 7 个回答 Voted Best Answer warp 2009-10-14T00:38:00+08:002009-10-14T00:38:00+08:00 rsync 通常会比 cp 或 tar 快,因为 rsync 只传输那些已更改的文件,而使用 --partial 它只会传输文件中已更改的部分。 话虽如此,如果您知道要备份什么并且可以安排事情,那么 rsync 会更好地工作,这样 rsync 就不必做太多的工作。例如,如果您将 /var/log 中的旋转日志文件旋转为包含日期的文件名,而不是 .0、.1、.2 等,则它们的工作效果会更好。 还有一点需要注意:在您的问题中,您提到了 /var/lib/mysql。使用 rsync 备份是一个非常糟糕的主意,使用 mysqldump 来获得可靠的备份。如果该备份太大而无法频繁传输,请使用 mysql 复制和从从站备份。(您仍然应该定期在主服务器上进行完整备份,复制也可能失败)。 leonm 2009-10-14T00:38:48+08:002009-10-14T00:38:48+08:00 取决于几个因素。对于大量小文件,通常最好执行 tar。如果是少量的大文件,大部分情况下 cp 是可以的。 如果您有一个文件列表但只有一小部分更改,则 rsync 更有效。 Nikolas Sakic 2009-10-14T04:56:31+08:002009-10-14T04:56:31+08:00 这取决于您要备份的内容。你不能只用 rsync 备份实时数据库,你会得到一个损坏的文件。对于数据库,如 mysql,您需要设置 cron,例如,运行 'mysqldump' 然后 rsync 该文件。此外,请确保在文件名后附加“日期”,以便知道该文件何时备份,并有多个备份副本以防万一。 pavium 2009-10-14T00:36:25+08:002009-10-14T00:36:25+08:00 啊,神奇的词backup 关于您提到的方法的相对速度,我不能说太多,但我认为rsync仅备份已更改文件的能力使其成为最佳方法。 特别是如果大多数文件不需要复制。 Blindy 2009-10-14T00:36:50+08:002009-10-14T00:36:50+08:00 如果您有很多小文件,tar在它们上运行将大大提高传输速度。 如果文件主要是文本(不是 mysql 二进制文件或数据库的情况),请考虑压缩 tar (bzip2等)。否则你不会从压缩中得到任何东西,所以不要管焦油。 simplr 2009-10-14T03:45:40+08:002009-10-14T03:45:40+08:00 假设您已经有文件的旧副本并且您只需要刷新副本,那么 rsync 比 cp 或 tar 快得多,因为它只传输已更改的字节。一个 100MB 的文件包含一些更改的记录将在几秒钟内更新。我发现它非常适合数据库文件,但我对二进制文件的成功率较低。 但是如果复制的目的是为了异地备份,那么 rdiff-backup 就没有什么可比的了。rdiff-backup 与 rsync 一样,仅传输文件内的更改,但它也维护增量更改,以便您可以从任何较早的备份日期恢复任何文件。 而且,对于 SQL 数据库,rdiff-backup 检查备份期间所做的更改并自动修复它们,所以恕我直言,它应该是安全的。当然,除非 SQL 服务器将数据保存在内存中而不将其写入磁盘——否则它将不安全。 kmarsh 2009-10-14T04:24:46+08:002009-10-14T04:24:46+08:00 SAN 快照是最快的方法,但可能不是您要寻找的答案。
rsync 通常会比 cp 或 tar 快,因为 rsync 只传输那些已更改的文件,而使用 --partial 它只会传输文件中已更改的部分。
话虽如此,如果您知道要备份什么并且可以安排事情,那么 rsync 会更好地工作,这样 rsync 就不必做太多的工作。例如,如果您将 /var/log 中的旋转日志文件旋转为包含日期的文件名,而不是 .0、.1、.2 等,则它们的工作效果会更好。
还有一点需要注意:在您的问题中,您提到了 /var/lib/mysql。使用 rsync 备份是一个非常糟糕的主意,使用 mysqldump 来获得可靠的备份。如果该备份太大而无法频繁传输,请使用 mysql 复制和从从站备份。(您仍然应该定期在主服务器上进行完整备份,复制也可能失败)。
取决于几个因素。对于大量小文件,通常最好执行 tar。如果是少量的大文件,大部分情况下 cp 是可以的。
如果您有一个文件列表但只有一小部分更改,则 rsync 更有效。
这取决于您要备份的内容。你不能只用 rsync 备份实时数据库,你会得到一个损坏的文件。对于数据库,如 mysql,您需要设置 cron,例如,运行 'mysqldump' 然后 rsync 该文件。此外,请确保在文件名后附加“日期”,以便知道该文件何时备份,并有多个备份副本以防万一。
啊,神奇的词
backup
关于您提到的方法的相对速度,我不能说太多,但我认为
rsync
仅备份已更改文件的能力使其成为最佳方法。特别是如果大多数文件不需要复制。
如果您有很多小文件,
tar
在它们上运行将大大提高传输速度。如果文件主要是文本(不是 mysql 二进制文件或数据库的情况),请考虑压缩 tar (
bzip2
等)。否则你不会从压缩中得到任何东西,所以不要管焦油。假设您已经有文件的旧副本并且您只需要刷新副本,那么 rsync 比 cp 或 tar 快得多,因为它只传输已更改的字节。一个 100MB 的文件包含一些更改的记录将在几秒钟内更新。我发现它非常适合数据库文件,但我对二进制文件的成功率较低。
但是如果复制的目的是为了异地备份,那么 rdiff-backup 就没有什么可比的了。rdiff-backup 与 rsync 一样,仅传输文件内的更改,但它也维护增量更改,以便您可以从任何较早的备份日期恢复任何文件。
而且,对于 SQL 数据库,rdiff-backup 检查备份期间所做的更改并自动修复它们,所以恕我直言,它应该是安全的。当然,除非 SQL 服务器将数据保存在内存中而不将其写入磁盘——否则它将不安全。
SAN 快照是最快的方法,但可能不是您要寻找的答案。