标签: backup

如何捕获目录及其所有子目录的一致快照?

我们有一个应用程序会定期将自身备份到本地文件系统上的目录。该目录中还有几个文件和目录。

我想生成所有这些文件的“快照”,可以将其复制到备份存储中。

最重要的是,我如何以原子方式生成这个“快照”?请记住,任何这些文件都可能被备份守护进程修改,从而导致我们的“快照”不一致。

编辑:

也许我应该提到系统有一个ext4文件系统。

tar backup ext4 snapshot

7
推荐指数
1
解决办法
3171
查看次数

Finder未运行时如何使用终端访问iCloud Drive

我想从终端访问 iCloud 驱动器以创建紧急备份。不幸的是,我安装的 Mac OS Yosemite 无法运行,所以我使用恢复模式来创建我的备份。在此模式下,Finder 不可用且 iCloud Drive 未运行。

我知道通常情况下,iCloud 驱动器目录位于 ~/Library/Mobile\ Documents/com~apple~CloudDocs. 不幸的是在恢复模式下使用终端时,该目录中没有出现(有似乎没有移动文件)。这是有道理的,因为我没有以任何用户身份登录(并且我相信恢复实用程序在其自己的分区上运行)。

我的问题是:

  1. 当 iCloud Drive 同步未运行(因为 Finder 未运行)时,有什么方法可以在 Mac OS恢复模式下(即在启动后按住)从终端连接和访问 iCloud 驱动器目录?cmd + r
  2. 如何使用终端命令将给定文件夹(包括所有子文件夹)中的所有文件复制到 iCloud 驱动器目录中?

如果无法使用终端登录 iCloud 驱动器,Dropbox 将是一个替代方案。但是,我不确定是否可以在恢复模式下安装 Dropbox 命令行工具。

command-line osx backup icloud

7
推荐指数
1
解决办法
2852
查看次数

vim:如何追溯白天对文件所做的所有更改

有谁知道如何设置vim(文本编辑器),以便可以追溯一天内对文件所做的所有更改?当我不小心修改了一个子程序并希望将它返回到它的初始状态时,我需要它,就像在一天开始时一样。

我通常使用 svn 将最新版本的源代码保存在全局存储库中。但有时我需要返回代码在两次 svn 提交之间的状态。

更新:

要启用持久撤消,请创建撤消目录,例如~/.vim/undodir,并将以下设置放入.vimrc文件中:

set undodir=~/.vim/undodir
set undofile
set undolevels=1000
set undoreload=10000
Run Code Online (Sandbox Code Playgroud)

vim backup session files

7
推荐指数
1
解决办法
1万
查看次数

可以通过仅复制文件结构树来备份 linux 文件系统吗?

这可能被认为更像是一个学术问题,但在这里。几年后回到 Linux,我在一台小型 PC 上安装了 Ubuntu 15.04 Desktop。

环顾文件系统,我看到了“真实文件”,例如其中的程序/bin/usr/bin但我还记得 Linux 通过文件系统处理设备 IO。所以有一个/dev目录,里面有明显的文件。我在/proc.

如果我想保留我的文件系统(例如在磁盘死机后 Linux 恢复的上下文中),我可以轻松地保存和目录tar的内容并恢复这些类型的文件。/bin/usr/bin

计算机启动时写入了哪些文件,这些文件是否可以作为备份的一部分安全地忽略?另外,特殊权限或硬链接等怎么样?

linux filesystems backup devices

7
推荐指数
1
解决办法
457
查看次数

如何使用git备份多个目录中的文件?

下面的示例被简化以显示问题的核心,而不是问题本身(我的文件树比这更复杂)。

假设我有两个文件要备份;一个在~/somedir/otherdir,另一个在~/otherdir/somedir/。我想从一个 git 存储库中的两个目录备份文件。我怎样才能做到这一点?软链接只携带有关文件存储位置的信息,而不是实际文件,而硬链接对我来说有点陌生。这是应该使用硬链接的情况吗?

说明:我想使用git有四个原因:我想存储文本文件的点文件/脚本/配置并跟踪随时间的变化,我知道 git,我有一个私有的 git 存储库可以用来存储它们,以及我希望能够在多台 PC 之间共享这些文件。

backup git

7
推荐指数
1
解决办法
3790
查看次数

Btrfs 快照到非 btrfs 磁盘。加密,读取访问

我想尝试 Btrfs。我已经发现您可以制作实时系统的快照,但有几件事我还没有找到答案。好吧,据我所知,快照基本上是某种存档形式的完整副本。那么我可以制作我的实时 btrfs 系统的快照并将该快照放在我的非 btrfs 硬盘驱动器(例如 ext4)上吗?

另外,我正在运行全盘加密(luks)。如果我将它们传输到某个地方,快照是否会被加密?快照是从分区本身复制实际数据(在这种情况下它显然会被加密)还是它的工作方式不同?

另外,如何保护 btrfs 快照免受读取访问?其他用户可以读取快照吗?还是只有root?是否可控?

backup ext4 btrfs snapshot

7
推荐指数
2
解决办法
4779
查看次数

替代 rsync --delete 将文件移动到另一个目录而不是删除

rsync用来备份远程机器上的大硬盘。默认情况下,rsync当远程机器上的文件不再存在于本地机器上时,不会删除它们。这很有用,因为它可以恢复,例如,如果我想恢复一个被错误删除的文件,这也意味着我不需要担心 rsync'ing 一个空目录(如果硬驱动器死亡或未安装)。问题是它在远程主机上占用了大量磁盘空间,而且如果我需要恢复备份,它将被这些已删除的文件污染。

替代方法是rsync --delete,但这意味着已删除的文件也将在我第一次运行备份时被删除,如果挂载点变为空,那么我也有删除备份的风险。

理想情况下,我希望有一种方法可以告诉rsync执行 like --delete,但不是删除文件,而是可以将它们移动到不同的备份层次结构。这样,如果我愿意,我仍然可以恢复这些文件,我可以清理第二个层次结构中的较大文件以节省空间,而主备份层次结构将是我驱动器的干净备份。

有没有办法模仿这种行为?(或一些类似的行为)

(我没有足够的磁盘空间来维护远程主机上的两个完整备份。另外,我知道增量备份工具的存在,例如Borg Backup,但我想要一个不依赖重型工具的解决方案自定义存储格式。我也有点担心使用硬链接的解决方案,但如果它是最好的选择,我可以接受。)

backup rsync

7
推荐指数
1
解决办法
4292
查看次数

无法 rsync:写入失败 - 设备上没有剩余空间 (28)

过去几个小时我一直试图保存我的“/”但没有成功:(

我在 Debian 的一个测试分支上,我想每次更新前都保存我的系统。备份将在第二个驱动器上进行,该驱动器是可启动的 Win7。

sudo rsync -aAXv --inplace --info=progress2 --no-whole-file --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home/*} / "/media/sessionR/Disque Dur 1/System_save_sauvegarde_25.03.2017/" > save.txt 
Run Code Online (Sandbox Code Playgroud)

下面相同的命令(不确定最佳可读性)

sudo rsync -aAXv --inplace --info=progress2 --no-whole-file --exclude={"/dev/\*","/proc/\*","/sys/\*","/tmp/\*","/run/\*","/mnt/\*","/media/\*","/lost+found","/home/\*} / "/media/sessionR/Disque Dur 1/System_save_sauvegarde_25.03.2017/" > save.txt 
Run Code Online (Sandbox Code Playgroud)
  • 源“/”在我的内部笔记本电脑 sata 硬盘上。

  • 目标“/media/sessionR/Disque Dur 1/System_save_sauvegarde_25.03.2017/”是“/dev/sdb2”的挂载点,它是替代 DVD 驱动器的第二个内部 sata 硬盘驱动器。

复制一些文件后,大量文件出现错误:设备上没有剩余空间(28):

rsync: recv_generator: mkdir "/media/sessionR/Disque Dur 1/System_save_sauvegarde_25.03.2017/var/tmp" failed: No space left on device (28)
*** Skipping any contents from this failed directory ***
Run Code Online (Sandbox Code Playgroud)

下面的最终结果就像 2Gb 而不是试运行宣布的 ±11Gb:

sent 2,554,663,982 bytes  received 1,188,942 bytes  17,446,095.04 bytes/sec
total size is …
Run Code Online (Sandbox Code Playgroud)

command-line backup rsync disk-usage files

7
推荐指数
1
解决办法
6928
查看次数

Tar 拆分为独立卷

我有一些包含超过 100Gb 数据的目录。我正在尝试将它们归档到较小的卷中,即每个独立/独立的10Gb 。

问题是如果我使用tar+ split,它会导致多个不独立的 tar 部分。我不能只从其中一个部分提取文件,除非我先将所有文件合并/合并回一个大文件。

我也尝试使用tar -c -L1000M ...分割卷,但这也不起作用,并且长文件名被截断存在问题。

也尝试star过,但似乎它的拆分卷也不是独立的;而 7zip 不保留 unix 中的权限。

我希望拥有独立的拆分档案的原因是为了安全起见,如果其中一个拆分文件损坏,我仍然可以从其他档案中检索数据。如果我只想提取特定的文件/文件夹,而不需要将所有档案合并回一个大卷,它也会快得多。

我如何最好地实现这一目标?谢谢你。


找到解决方案

正如@Haxiel 的回答所建议的那样,我找到了一个使用 tar 的解决方案。答案已发布在下面。

请注意,如果它跨越卷的边界并且您没有可用的下一个卷,则可能仍有一两个文件丢失,但即使其他部分丢失,至少可以独立提取单独的卷。

linux tar backup archive

7
推荐指数
1
解决办法
2064
查看次数

通过 ssh 使用 gzip 压缩对树莓派进行 dd 备份

我通过 ssh 使用 gzip 压缩从另一台 Linux 计算机上“实时”备份我的树莓派。我使用这个脚本:

#!/bin/bash
dt=`date +%y%m%d`
ssh pi@192.168.1.141 "sudo dd if=/dev/mmcblk0 bs=1M | gzip -" | dd of=./pibackup-$dt.gz
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但生成的文件是 26Gb,这太多了(我认为)。我只想备份系统的内容,而不备份空闲集群。我知道 dd 会进行整个备份,包括空闲集群,但我认为通过使用 gzip 我可以减小生成文件的大小。

因此,当我输入 df -h 时,请查看我的系统:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  3.1G   24G  12% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           464M     0  464M   0% /dev/shm
tmpfs           464M   49M  415M  11% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/mmcblk0p1  253M   52M  201M  21% …
Run Code Online (Sandbox Code Playgroud)

linux ssh backup dd raspberry-pi

7
推荐指数
1
解决办法
3965
查看次数

标签 统计

backup ×10

linux ×3

command-line ×2

ext4 ×2

files ×2

rsync ×2

snapshot ×2

tar ×2

archive ×1

btrfs ×1

dd ×1

devices ×1

disk-usage ×1

filesystems ×1

git ×1

icloud ×1

osx ×1

raspberry-pi ×1

session ×1

ssh ×1

vim ×1