复制文件系统时出现令人困惑的 CPIO 问题

复制文件系统时出现令人困惑的 CPIO 问题

几十年来,在许多 Unix 变体上,我使用以下命令进行备份。

find /source/directory | cpio -dumpv /destination/directory

最近在 Ubuntu 上,它以一种奇怪的方式失败了:它没有创建目标目录,而是创建了一些奇怪的数据文件。此外,它输出(对于输入列表中的每个文件)“无法创建目标/目录:文件存在。如果我没记错的话,目标文件是最后一个复制过来的文件。摘要:最近 cpio(1) 传递无法创建目录。

附加数据:

CPIO(1) version: cpio (GNU cpio) 2.13
Ubuntu  Version: Started as 20.4 and kept up with automatic upgrade.

(如何获取 Ubuntu 版本?)

如果我使用长格式(getopts),它似乎有效:

cat /tmp/list | cpio --pass-through --make-directories --preserve-modification-time --unconditional /bu/Nightly/20220618 

但它仍然没有创建目录。似乎在上周左右发生了一些变化。

#file /usr/bin/cpio
/usr/bin/cpio: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=419bee4eb6cf7238d4e5ee8cda5657310719b634, for GNU/Linux 3.2.0, stripped

文件系统:ZFS 无处不在 {zpool,zfs} 版本:

#zfs version
zfs-2.0.6-1ubuntu2.1
zfs-kmod-2.0.6-1ubuntu2.1

我知道还有其他方法可以实现相同的目的,但我的视力很差,我真的不想深入研究几十年前的 shell 脚本。我知道这种方法在过去(两周前)对 Ubuntu 有效。我有数 TB 的档案无法再更新。

问题显然出在 cpio(1) 上。可以使用列出内容的文件来替换其中的 find(1) 管道,甚至可以直接输入文件名。

相关内容