鉴于 tar 忽略了我的 2 个套接字,我该如何备份然后恢复我的登录文件夹?

Bil*_*key 8 backup restore tar sockets macos

我对我的登录区域进行了网络备份,以准备重新格式化它所在的卷,使其可在运行最新版本Leopard 的旧 Power Mac G5启动。

虽然我不相信这个症状是实际tar调用的函数,但这里是完整的实际命令:

   bill@r2d2-2:~
   [108] (sudo tar cf - -C /Volumes/usr1 Users) | gzip -c - | ssh whmcclos@mbp \
             'cat > /Volumes/link2TMS/r2d2_usr1_Users.tar.gz'
   tar: Users/bill/Library/Acrobat User Data/8.0_ppc/Synchronizer/Commands: socket ignored
   tar: Users/bill/Library/Acrobat User Data/8.0_ppc/Synchronizer/Notification: socket ignored
Run Code Online (Sandbox Code Playgroud)

tar是忽略的两个套接字文件

bill@r2d2:~/Library/Acrobat User Data/8.0_ppc/Synchronizer
[11] ls -larhdt *
drwx------  3 bill  staff   102B Jun  4  2010 metadata
-rw-r--r--  1 bill  staff     0B Jan 20 13:05 adobesynchronizersu80
srwxr-xr-x  1 bill  staff     0B Jan 20 13:05 Notification
srwxr-xr-x  1 bill  staff     0B Jan 20 13:05 Commands
Run Code Online (Sandbox Code Playgroud)

几年没有创建套接字了,一旦我得到提示,我就会知道该怎么做。正如标题所说,如果tar忽略了这些文件,我该如何备份然后恢复它们?

use*_*686 10

你没有。

Unix 本地套接字在程序尝试在给定路径上侦听连接时立即创建,尽管是一种文件,但它们仅充当指向内存结构的指针;所以它们只有在程序仍在运行时才有用(并且只在同一台机器内;没有 NFS 或任何类似的东西)。

程序退出后,socket文件不再有用(一般是程序自己删除的);事实上,如果程序重新启动,它必须在侦听同一路径之前删除旧套接字- 否则它会收到“地址已在使用中”(就像两个程序试图采用相同的 TCP 端口一样) .

这与命名管道(又名 fifos)有些不同,命名管道的工作方式要简单得多(一个进程写入,一个进程读取),因此是可重用的;可以使用mkfifomknod p …命令创建命名管道。