我们的系统管理员创建了一个备份系统,可以创建硬盘驱动器的快照。
当我尝试从快照恢复旧版本时:
cp /path/to/snapshots/foo.bar /path/to/folder/foo.bar
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
cp: `/path/to/snapshots/foo.bar' and `/path/to/folder/foo.bar' are the same file.
Run Code Online (Sandbox Code Playgroud)
我可以删除文件并复制它,但我想知道是否有办法用 cp 来做到这一点。
我知道这些文件没有链接,因为:
尽管如此,inode文件的数量是相同的
集群是在red hat linux上实现的,不知道是什么文件系统
df 结果:
Filesystem 1K-blocks Used Available Use% Mounted on
<ipadress>:/vol/hpc/storage
67633152 67633152 0 100% /storage
<ipadress>:/vol/hpc/storage
2186805248 982498048 1204307200 45% /storage
Run Code Online (Sandbox Code Playgroud)
统计结果:
File: `/path/to/snapshots/foo.bar'
Size: 404 Blocks: 8 IO Block: 4096 regular file
Device: 17h/23d Inode: 19750461 Links: 1
Access: (0644/-rw-r--r--) Uid: (<num1>/ yotama9) Gid: ( <num2>/ <groupname>)
Access: 2012-01-22 00:03:27.246852000 +0200
Modify: …Run Code Online (Sandbox Code Playgroud) 我的其中一张磁盘上安装了 Windows 7。我想在我的 Xen HVM 中启动这个 Windows 系统,但我不希望更改是永久性的。所以我想创建我的 Windows 7 分区的快照。我检查了 LVM,但似乎 LVM 只能为它创建的 LV 创建快照。我正在寻找更通用的快照方法。
我有几个 Ubuntu(可能还有 RHEL)服务器,我想备份到中央备份服务器(通过 rsh/SSH)。我想做快照和增量备份。目标是,如果其中一台备份服务器突然死机,我可以安装引导程序映像,从备份中恢复,并且最好在此后立即启动并运行。
这些服务器具有唯一的用户和组,以及一些相同名称的不同 gid 和 uid。我正在考虑 rsync(本地备份工作正常,我有细粒度的控制,所以我也可以备份 xattrs 和 ACL),但后来我意识到到远程服务器的 rsync 可能不会像预期的那样保留这些细微差别。
那么,有什么更好的方法来实现这一目标呢?是否有一个包通常用于此目的?
为了备份服务器的“/home”目录树,我创建了一个“备份”帐户并使用 setfacl 使其可以读取整个目录。我的 cron 作业每晚都以 root 身份运行此命令:
setfacl -R -m u:backup:rx,d:u:backup:rx /home
Run Code Online (Sandbox Code Playgroud)
很好,除了一个问题:每当我运行此命令时,它都会更改我的 ssh 密钥的组权限。
me@myserver:~/.ssh$ ls /home/me/.ssh/id_rsa -l
-rw-r-x---+ 1 me me 1679 Jan 8 18:35 /home/me/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
好吧,这会导致我的 ssh 程序停止运行,因为它现在是组可读的。奇怪的是,getfacl 不同意这些权限。
me@myserver:~/.ssh$ getfacl /home/me/.ssh/id_rsa
getfacl: Removing leading '/' from absolute path names
# file: home/me/.ssh/id_rsa
# owner: me
# group: me
user::r--
user:backup:r-x
group::---
mask::r-x
other::---
Run Code Online (Sandbox Code Playgroud)
getfacl 认为该文件不是组可读的。如果我运行明显的命令
chmod 400 id_rsa
Run Code Online (Sandbox Code Playgroud)
权限是固定的,但每次我重新运行原始命令时都会恢复(setfacl -R -mu:backup:rx,d:u:backup:rx /home)。这是怎么回事?
注意:我确实希望我的 id_rsa 备份,所以我们不用担心这些安全隐患。
我今天运行了我的 Rsnapshot 备份,但我的外部驱动器在增量备份中途变满(我现在有大约 20 个增量备份)。
rsync: write failed on "<path>": No space left on device (28)
Run Code Online (Sandbox Code Playgroud)
我现在有一个 hourly.0 目录,我认为它包含一个不完整的增量备份。如何在不丢失数据的情况下从这种情况中恢复并重做备份?
我最初的想法是:
我最担心的是删除 hourly.0 会以某种方式混淆 Rsnapshot 并导致问题。但这是正确的方法吗?
前段时间我用 Clonezilla 创建了一个 EXT4 分区的备份。现在硬盘坏了,我丢失了一些重要数据。
分区的镜像大小为 50GB。我试图将这个映像恢复到 200GB 的 HDD,但结果原始分区的大小为 500GB。由于我没有用于转储的 500GB 硬盘驱动器,我想出了如何通过传递-C给 partclone来强制 Clonezilla 忽略它。但是在恢复时它因错误而停止target seek ERROR:Invalid argument。
我可以想象分区上的数据是碎片化的,因此实际位图不适合。有解决方法吗?我有一个大约 600GB 的可用硬盘,但我不喜欢触摸分区表之类的东西。理想情况下是一种将其恢复为可安装映像的方法。(ISO或类似)
我想检查从备份还原的结果。这是因为 MacOS 上的 TimeMachine 给了我一些奇怪的错误和警告,我想确保在恢复后一切都恢复原状。虽然我不相信 TimeMachine 会放回每个文件,但我相信它会将它恢复的每个文件都放回正确的内容。
我想过 diff -r,但经历大约 300 GiB 可能需要永远。我可以至少比较文件的存在,但在同一次运行中比较大小和日期更好。
我知道像这样的解决方案
diff <(ls -R $PATH1) <(ls -R $PATH2)
Run Code Online (Sandbox Code Playgroud)
但输出难以阅读。我宁愿每个文件只在一侧找到一行。此外,我必须依靠 ls 以相同的顺序在双方的树中进行。这可能不同,因为文件系统可能不同。
我最想得到一个懒惰的工具,它采用两条路径,输出差异达到任何所需的检查水平,也许是 macports 之外的东西。但我不害怕大量的抨击。
我有一个包含许多文件的目录。这些文件总共占用了几 GB 的空间。我想压缩这个目录。
但是将目录压缩为单个文件会使该文件难以移动,因此我想要多个文件。
我可以使用:
tar cvzf - dir/ | split --bytes=200MB - sda1.backup.tar.gz.
Run Code Online (Sandbox Code Playgroud)
要做到这一点,但我担心我将需要所有备份文件才能恢复任何数据。我更希望每个文件都是自己的独立单元,包含源数据的一部分。
我能想到的一种方法是构建一个脚本,该脚本计算每个输入文件的大小并贪婪地将文件附加到列表中,直到达到最大大小。然后对文件列表进行 tar-ed 并开始一个新列表。重复此操作,直到所有文件都在 tars 中。然后可以独立提取焦油。
这不是其他问题的重复,因为我特别想知道如何以这样的方式执行此操作,即整个存档的每个部分本身都是一个有效的存档,并且每个文件都可以在不需要联合存档的情况下重建。
有没有做这种事情的实用程序?
关于 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)