AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[snapshot](unix)

Martin Hope
Muzzamil
Asked: 2023-03-02 00:43:49 +0800 CST

带有描述和日期的 Grep Snapper 快照

  • 5

我正在使用带有 snapper 和 BTRFS 的 Arch Linux。

我正在编写一个供个人使用的脚本,以简化通过 snapper 快照恢复系统的过程。显然应该启动到 live USB 并首先将顶级子卷挂载到 /mnt。

我按照 ArchWiki 的步骤列出了快照程序创建的所有快照,但我想同时显示日期和描述。我觉得我可能需要回滚到我只能通过描述而不是日期来识别的特定快照。

Wiki 建议运行:

grep -r '<date>' /mnt/@snapshots/*/info.xml

有没有一种方法可以像在正在运行的系统上运行 snapper ls 一样,将日期和描述显示在一行中。

我想输出应该类似于下面的内容

/mnt/@snapshots/21/info.xml:  <date>2021-07-20 22:00:00</date <description>pacman -Syu</description>
/mnt/@snapshots/24/info.xml:  <date>2021-07-22 22:00:00</date> <description>pacman -S tree</description>
/mnt/@snapshots/25/info.xml:  <date>2021-07-23 22:00:00</date> <description>binutils boost-libs breezy clucene cmake copyq exiv2 gedit gnome-desktop</description>
/mnt/@snapshots/26/info.xml:  <date>2021-07-24 22:00:00</date> <description>google-chrome</description>

snapshot
  • 1 个回答
  • 34 Views
Martin Hope
Arni J
Asked: 2019-08-16 13:58:02 +0800 CST

ZFS 发送 1.6GB 卷会产生一个巨大的文件 - 应该归咎于碎片吗?

  • 0

我有一个以前从未见过的奇怪问题。我有一个 ZFS 卷,它报告它的大小约为 1.7Gb,快照也是如此。如果我然后尝试为备份目的进行 zfs 发送,我会得到一个巨大的文件 - 我的自动备份 gzip 后生成一个 12Gb 的文件,当我刚刚进行测试时(没有 gzip)我在文件增长到后中止了66Gb - 这表明有很多重复数据。这里发生了什么?碎片化?如果是这样,该怎么办?

# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
lxd    476G  64.8G   411G         -    60%    13%  1.00x  ONLINE  -

体积:

# zfs list
NAME                                                                                  USED  AVAIL  REFER  MOUNTPOINT
lxd                                                                                  64.8G   396G    24K  none
...
lxd/containers/cdinspector                                                            993M  1.32G  1.68G  /var/snap/lxd/common/lxd/storage-pools/lxd/containers/cdinspector

快照:

# zfs list -t snapshot
NAME                                                                                           USED  AVAIL  REFER  MOUNTPOINT
lxd/containers/cdinspector@test                                                               1.39M      -  1.68G  -

列表-r

# zfs list -r lxd/containers/cdinspector
NAME                         USED  AVAIL  REFER  MOUNTPOINT
lxd/containers/cdinspector  1.05G  1.31G  1.69G  /var/snap/lxd/common/lxd/storage-pools/lxd/containers/cdinspector

用于流式传输卷的命令:

# zfs send lxd/containers/cdinspector@test | /usr/bin/mbuffer -m 500M > /backup/test
zfs snapshot
  • 1 个回答
  • 292 Views
Martin Hope
Zethex
Asked: 2019-04-14 04:21:46 +0800 CST

更改 Snapper 创建快照的位置

  • 1

我有一个 BTRFS 文件系统,运行 Arch Linux x86_64。在那个文件系统上,我有顶级子卷(id=5),然后在里面我有@root、@home、@snapshots、@swapfile。我希望能够创建一个 Snapper 配置来自动将 @root 和 @home 快照到 @snapshots。默认似乎它会在我为其创建配置的子卷内为其快照创建一个子卷,有没有办法改变它创建快照的位置?

btrfs snapshot
  • 2 个回答
  • 1268 Views
Martin Hope
fclad
Asked: 2019-03-06 16:01:04 +0800 CST

没有第一个快照的 ZFS 增量快照发送/接收

  • 4

我有以下 ZFS 数据集:

pool/dataset
pool/dataset@snap1
pool/dataset@snap2
pool/dataset@snap3

已使用 ZFS 发送/接收复制到备份池

backupPool/dataset
backupPool/dataset@snap1
backupPool/dataset@snap2

之后,我删除了dataset@snap1和dataset@snap2,pool我处于无法dataset@snap3增量发送到的情况backupPool。

有没有办法解决这种情况?例如,在 和 之间生成 ZFS 增量快照pool/dataset@snap3并将backupPool/dataset@snap2其发送到backupPool?backupPool/dataset@snap2还是转回pool?

我可以转移pool/dataset@snap3到 中的新数据集backupPool,但我确实需要保留快照的“历史”。

zfs snapshot
  • 1 个回答
  • 1766 Views
Martin Hope
Daniel Böhmer
Asked: 2019-01-03 11:52:24 +0800 CST

如何一次复制多个快照而不复制数据?

  • 4

我有一个 3.7TiB 的实时 btrfs 文件系统,已满 90%,包括旧快照和新的 4TB 备份硬盘。如何将所有现有快照复制到备份硬盘?

我试过了

# btrfs send home_1 home_2 home_3 share_1 share_2 share_3 ...

但在传输 2/3 的快照之前备份硬盘已满。所以我做了一些研究:

# ### create test image
# dd bs=1M count=1000 > btrfs_test.dd
# mkfs.btrfs btrfs_test.dd

# ### create snapshots
# btrfs subvol create testvol/
# btrfs subvol snapshot -r testvol/ testvol_0/
# ### (copy some ISO image)
# btrfs subvol snapshot -r testvol/ testvol_1/
# ### (proceed until testvol_3)

然后我的测试文件系统已满 91%,使用了 818MiB。

# btrfs send testvol_* | wc -c 
At subvol testvol_0
At subvol testvol_1
At subvol testvol_2
At subvol testvol_3
1466441978     # 1398MiB >> 1000MiB

当简单地用 1 个命令发送所有快照时,数据被复制,并且流的大小以及接收端的快照大小超过了原始使用的空间和硬盘的容量。

所以实际的问题变成了:如何复制多个快照而不复制其中两个或多个快照中包含的数据?

对于这个简单的测试用例,我成功地尝试了增量方法:

# ( btrfs send testvol_0; btrfs send -p testvol_0 testvol_1; btrfs send -p testvol_1 testvol_2; btrfs send -p testvol_2 testvol_3 ) | wc -c 
At subvol testvol_0
At subvol testvol_1
At subvol testvol_2
At subvol testvol_3
838778546    # 800 MiB < 1000MiB

但是在真实的文件系统上有多个子卷,每个子卷都有多个快照。我无法定义任何与 一起使用的顺序-p。如果一个数据块在子卷之间共享home_1,当然我只想传输和存储一次home_2。share_3任何想法如何做到这一点?

btrfs snapshot
  • 1 个回答
  • 969 Views
Martin Hope
Robert Pollak
Asked: 2018-12-16 13:21:35 +0800 CST

如何查找 btrfs 快照的创建日期/时间

  • 2

是否有一种通用的方法来查找 btrfs 快照的创建日期,或者是否有必要在快照名称中编码日期,例如由Timeshift完成?

btrfs snapshot
  • 1 个回答
  • 1348 Views
Martin Hope
pipe
Asked: 2018-10-22 15:08:44 +0800 CST

从 btrfs 快照恢复单个文件而不进行完整复制

  • 5

背景

我使用btrbk在我的 btrfs 文件系统上维护一系列每小时快照。子卷和快照的存储方式如下(缩短名称以便于理解):

/@vol               (subvolume)
/btrbk/@vol.00      (snapshots of /@vol, one per hour)
/btrbk/@vol.01      ...
/home/user/vol      (mountpoint for /@vol)

现在我删除了一个/home/user/vol我不应该删除的文件。没问题,我可以轻松地从最新的快照中恢复:

# cd /home/user/vol
# cp -a --reflink=always /btrbk/@vol.01/all_ipv4_numbers.txt ./
cp: failed to clone './all_ipv4_numbers.txt' from '/btrbk/@vol.01/all_ipv4_numbers.txt': Invalid cross-device link

似乎我无法“重新链接”该文件。但我不想最终得到文件的两个副本。理想情况下,我希望它看起来在最近的快照和将来拍摄的下一个快照之间没有发生任何事情。

(是的,我也有实际的备份,但是从快照恢复更方便!)

问题

如何从 btrfs 快照恢复单个文件,同时保留所有使 btrfs 知道它是所有快照中相同数据的良好引用和魔法?

btrfs snapshot
  • 1 个回答
  • 1337 Views
Martin Hope
fadedbee
Asked: 2018-03-01 05:53:28 +0800 CST

将相同的数据写入 ZFS 下的文件块会占用快照中的空间吗?

  • 4

我有一个 16M 的文件。

我拍摄了包含它的 ZFS 文件系统的快照。

如果我用相同的数据覆盖文件,ZFS 是否需要存储文件所有块的两个副本?

zfs snapshot
  • 1 个回答
  • 805 Views
Martin Hope
MountainX
Asked: 2018-02-21 18:51:27 +0800 CST

Snapper 最近开始每小时执行一次重复快照

  • 1

在过去的两年里,Snapper 一直在完美地执行每小时快照(按小时)。几天前,我注意到每小时拍摄两张快照。一个在整点 (HH:00),另一个在整点后 1 分钟 (HH:01)

snapper 日志文件为这两个重复快照显示了 libsnapper 的相同进程 ID。每个小时都有一个新的进程ID,但是根据日志,重复的快照是由相同的进程ID执行的。在日志中,事情看起来很正常。据我所知,这项工作只是重复了两次。

snapper list-configs没有任何重复的配置。

我一直为 snapper-timeline.timer 启用和启动 systemd 计时器(根据Arch 的 Snapper wiki 页面设置)。

我没有根 cron:

# crontab -l
no crontab for root

据我所知,任何用户都没有 cron:/var/spool/cron/是空的。

这是真正奇怪的事情。停止和禁用后snapper-timeline.timer,整点的快照停止,但整点后 1 分钟的快照继续。即使在重新启动后也是如此。

在上述步骤之后,systemctl 没有列出 snapper-timeline.timer 条目:

$ systemctl --user list-timers
0 timers listed.
$ sudo systemctl list-timers
NEXT                         LEFT          LAST                         PASSED        UNIT                         ACTIVATES
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       logrotate.timer              logrotate.service
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       man-db.timer                 man-db.service
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       shadow.timer                 shadow.service
Wed 2018-02-21 03:54:50 EST  5h 35min left Tue 2018-02-20 03:54:49 EST  18h ago       snapper-cleanup.timer        snapper-cleanup.service
Wed 2018-02-21 03:59:50 EST  5h 40min left Tue 2018-02-20 03:59:49 EST  18h ago       systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2018-02-26 00:00:00 EST  5 days left   Mon 2018-02-19 00:00:23 EST  1 day 22h ago fstrim.timer                 fstrim.service

更新:

正如我们从Arch Wiki Snapper 页面中所知道的,在“自动时间线快照”下:

如果您有 cron 守护程序,此功能 [自动每小时快照] 应该会自动启动。

正如我上面所说,我crontab -l以 root 和我的用户身份进行了检查,两者都是空的。

但是,就我而言,我确实安装了 cronie(cronie 是一个 cron 守护程序)。查看/etc/cron.daily/显示了一个 snapper 文件,/etc/cron.hourly/还包含一个 snapper 文件。

剩下的问题是:

  1. 哪个用户的 crontab 会显示 Snapper cronjob?

  2. 有没有办法让 Snapper 的 cronjob 处于非活动状态,它会在包更新期间持续存在(同时保持 systemd 计时器处于活动状态)?我假设如果我只是删除/etc/cron.daily和 /etc/cron.hourly/` 中的条目,它们将在更新 Snapper 包时被替换。[更新 2:我做了一个测试来证实这个假设。看评论。]

btrfs snapshot
  • 1 个回答
  • 1074 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve