我有一个包含许多文件的目录。这些文件总共占用了几 GB 的空间。我想压缩这个目录。
但是将目录压缩为单个文件会使该文件难以移动,因此我想要多个文件。
我可以使用:
tar cvzf - dir/ | split --bytes=200MB - sda1.backup.tar.gz.
Run Code Online (Sandbox Code Playgroud)
要做到这一点,但我担心我将需要所有备份文件才能恢复任何数据。我更希望每个文件都是自己的独立单元,包含源数据的一部分。
我能想到的一种方法是构建一个脚本,该脚本计算每个输入文件的大小并贪婪地将文件附加到列表中,直到达到最大大小。然后对文件列表进行 tar-ed 并开始一个新列表。重复此操作,直到所有文件都在 tars 中。然后可以独立提取焦油。
这不是其他问题的重复,因为我特别想知道如何以这样的方式执行此操作,即整个存档的每个部分本身都是一个有效的存档,并且每个文件都可以在不需要联合存档的情况下重建。
有没有做这种事情的实用程序?
我正在寻找一种增量备份工具,用于正在运行的基于磁盘的 linux 系统(例如 ubuntu 等),以及一种免费软件工具。
Clonezilla 可以进行准确的备份,但只能在系统空闲时进行。
Acronis for linux 可以在正在运行的系统上进行准确的备份,但它不是免费软件。Acronis 和 BTRFS 使用一些方法在文件系统运行时捕获文件系统更改,以模拟在运行时停止操作系统的效果。我正在寻找可以做到这一点的东西。
建议使用 rsync、dump 和许多其他不适合的工具,甚至将其用于此目的,但不能相信它们能够准确捕获正在运行的操作系统。rsync 用于静态文件系统时很好,但不适用于多线程运行文件系统。
令我惊讶的是,有多少人相信只需以某种方式复制文件系统,就可以准确备份正在运行的文件系统。几年前我构建了一个小型的多任务引擎,我很清楚一个任务污染另一个工作的危险。只有当备份作为原子任务运行时,所有其他任务在它工作时停止,才能确保捕获 100% 准确的可恢复备份。没有什么比拥有一个您所依赖的备份更糟糕的了,并且相信它会拯救您,但在您尝试使用它时却损坏了它。
我需要这个用于普通的旧桌面 linux,而不是虚拟设置。
我正在寻找 MacOS/OS X 设备的时间机器或 Windows 计算机上的文件历史记录的(良好)备份替代方案。实际上我正在寻找的是更接近Windows的解决方案而不是时间机器。
所以我知道我可以使用 rsync或 - 具有漂亮的 UI -回到过去。但是我并不是在寻找外部备份解决方案!
这意味着我更希望拥有 Windows Vista(以及以上版本 AFAIK)中的文件历史记录。在 Windows Vista/7 上,这与卷影副本一起使用,所以这正是我想要的:

所以我想将备份/文件历史记录保存在同一驱动器上(可能还有分区,但这并不重要)。我还将其保存在另一个内部驱动器上,但不保存在外部驱动器上。
Linux 有这样的解决方案吗?或者我怎样才能最好地复制这种行为?这就是为什么不应复制现有文件,并且仅当我实际修改或删除它时才应保存备份(文件的副本)。这样可以节省大量空间,特别是对于较大的文件,您无论如何都不会编辑这些文件。与 rsync/backintime 相反,即使使用增量备份,也会复制从未修改的文件。
将网站代码库和数据库的临时手动备份放入 /tmp 文件夹是否安全?我正在运行 Debian 8。我想将它们留在那里几天。我不确定这个目录是否被覆盖或清空。
谢谢!
我意识到有很多类似的问题,但我还没有找到能回答我明确查询的问题。
我仍在使用 Linux Fedora 20,并且已经过了我应该升级到最新版本的时间。我已经开始使用 Deja Dup 将我的 /home 目录备份到一个 1 TB 的外部硬盘驱动器上;我的问题是,在开始安装之前,我还应该备份哪些其他目录?
如何压缩多个文件夹,每个文件夹都有自己的 zip 存档并选择目标位置。例如:我已经安装了设备“ssd”,我有很多文件夹:
home/user1/folder1
home/user1/folder2
...
home/user1/folderN
Run Code Online (Sandbox Code Playgroud)
我想要得到:
/media/user1/ssd/MyBackUp/folder1.zip
/media/user1/ssd/MyBackUp/folder2.zip
...
/media/user1/ssd/MyBackUp/folderN.zip
Run Code Online (Sandbox Code Playgroud) 很久以前写过一个备份脚本,用到了tar手册的这部分:
您可以提供多个“--exclude”选项。
--exclude-from=file
-X file导致 tar 忽略与文件中列出的模式匹配的文件。
我的 tar 命令如下:
includesFile=include.txt
excludesFile=exclude.txt
tar zcpf - . -T ${includesFile} -X ${excludesFile} | openssl des3 -salt | dd of=out.bak
Run Code Online (Sandbox Code Playgroud)
这是include.txt:
/etc/
/var/
/usr/
/data/
/opt/
/root
Run Code Online (Sandbox Code Playgroud)
这是 exclude.txt
/data/webapp/webapp-data/*
/var/cache/*
/var/lib/dpkg/*
/usr/bin/*
/usr/share/locale/*
Run Code Online (Sandbox Code Playgroud)
它曾经工作得很好。最近我注意到存档的大小显着增加,通过切换到详细tar让我看到它包含了webapp-data巨大的目录。出于某种原因,它不再被排除在外。
我做的最后一件事是从Debian Jessie升级到Debian Stretch。版本变化很小,不知道是不是这个原因。
我尝试更改/data/webapp/webapp-data/*为/data/webapp/webapp-data/**,但这没有帮助。
为什么排除列表不再起作用?
关于 Linux Mint 中 Timeshift 备份的一些问题:
我可以期待 btrfs 选项和 rsync 选项之间用于备份的驱动器空间的差异吗?据我了解,btrfs 使用基于差异的快照,因此应该有效利用空间。rsync 会做类似的事情吗?
在家庭系统中使用 btrfs 而不是 ext4 有什么缺点吗?
如果某些内核更新或其他任何阻止系统启动,Timeshift 会在启动期间弹出作为恢复选项吗?
为了使用 定期备份我的手机(Samsung A5 2016 或SM-A510F)rsync,我使用了以下命令:
rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace --progress /run/user/1000/gvfs/mtp\:host\=%5Busb%3A002%2C018%5D/Phone/ /data/phone_back_folder/
Run Code Online (Sandbox Code Playgroud)
1000 显然,是我用户的 UIDmtp\:host\=%5Busb%3A002%2C018%5D 是安装时给我的手机的临时 MTP 主机名(每次安装设备时都会以某种方式改变)--omit-dir-times并且--no-perms在这里是因为 MTP 显然不是他们因为我使用了这个--progress标志,所以我可以看到每个文件的估计传输速度,例如:
Phone/DCIM/Camera/20180408_184356.jpg
2,814,075 100% 16.58MB/s 0:00:00 (xfr#265, to-chk=821/1262)
Run Code Online (Sandbox Code Playgroud)
但这些数字令人难以置信,因为在大多数情况下,系统似乎处于空闲状态,等待下一个文件传输。
$ dstat -cd --disk-util --disk-tps
----total-cpu-usage---- -dsk/total- sda--sdb--sdc- -dsk/total-
usr sys idl wai hiq siq| read writ|util:util:util|reads writs
6 1 93 0 0 0| 344k 166k|0.03:0.37:1.43| 5 6
2 0 98 0 0 0|4096B 0 | 0: …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种按块内容存储文件的文件系统,因此类似的文件只需要一个块。这是用于备份目的。它类似于 zbackup 等块级备份存储提出的建议,但我想要一个 Linux 文件系统,它允许透明地执行此操作。