用tar做整个备份时出错

我正在尝试这个命令

tar cvpzf /TEMP_BACKUPS/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/tmp --exclude=/TEMP_BACKUPS --exclude=/mnt --exclude=/sys / > /TEMP_BACKUPS/mylog.txt 

我得到这个错误。 我试了两次

 tar: Removing leading `/' from member names tar: /dev/log: socket ignored tar: Removing leading `/' from hard link targets tar: /selinux/policy: Cannot open: Invalid argument tar: /var/spool/postfix/public/flush: socket ignored tar: /var/spool/postfix/public/cleanup: socket ignored tar: /var/spool/postfix/public/showq: socket ignored tar: /var/spool/postfix/private/defer: socket ignored tar: /var/spool/postfix/private/virtual: socket ignored tar: /var/spool/postfix/private/proxywrite: socket ignored tar: /var/spool/postfix/private/verify: socket ignored tar: /var/spool/postfix/private/anvil: socket ignored tar: /var/spool/postfix/private/lmtp: socket ignored tar: /var/spool/postfix/private/bounce: socket ignored tar: /var/spool/postfix/private/relay: socket ignored tar: /var/spool/postfix/private/scache: socket ignored tar: /var/spool/postfix/private/retry: socket ignored tar: /var/spool/postfix/private/error: socket ignored tar: /var/spool/postfix/private/rewrite: socket ignored tar: /var/spool/postfix/private/tlsmgr: socket ignored tar: /var/spool/postfix/private/local: socket ignored tar: /var/spool/postfix/private/discard: socket ignored tar: /var/spool/postfix/private/trace: socket ignored tar: /var/spool/postfix/private/smtp: socket ignored tar: /var/spool/postfix/private/proxymap: socket ignored tar: /var/lib/mysql/mysql.sock: socket ignored tar: /var/www/html/run/wsgi.1458.0.1.sock: socket ignored tar: /var/www/html/run/wsgi.4861.1.1.sock: socket ignored tar: /var/www/html/run/wsgi.1178.0.1.sock: socket ignored tar: /var/www/html/run/wsgi.1179.0.1.sock: socket ignored tar: /var/run/dbus/system_bus_socket: socket ignored tar: /var/run/abrt/abrt.socket: socket ignored tar: /var/run/rpcbind.sock: socket ignored tar: /var/run/portreserve/socket: socket ignored tar: /var/run/nscd/socket: socket ignored tar: Exiting with failure status due to previous errors 

我需要做什么来做完整的备份

请注意,您的tar命令正在成功完成; 它只是抱怨套接字条目。 蒂芙尼提出了一个过滤出这些特定错误信息的机制,尽pipetar仍然会以一个错误码退出。

你也可以给套接字列表提供-X选项,使它们从备份中排除,例如:

 # find / -type s -print > /tmp/sockets-to-exclude # tar cvpzf /TEMP_BACKUPS/backup.tgz -X /tmp/sockets-to-exclude \ --exclude=/proc --exclude=/lost+found --exclude=/tmp \ --exclude=/TEMP_BACKUPS --exclude=/mnt --exclude=/sys / > /TEMP_BACKUPS/mylog.txt 

这种技术的好处是它使tar的退出代码更有用(也就是说,你可以使用退出代码来决定备份是否成功完成)。

你也可以通过用一个-X (又名--exclude-from )replace你的其他--exclude选项来缩短你的命令行,并简单地将它们列在一个文件中。

事实是焦油是成功的,但打印出警告,这些套接字文件被忽略

GNU tar实际上提供了一个压制警告的选项。 您可以使用下面的命令忽略“套接字忽略”错误,避免运行可能需要很长时间才能完成的查找命令。

 tar --warning='no-file-ignored' -cpzf backup_name.tar.gz /folder_to_backup 

这个链接有更多的细节

套接字是守护进程用来相互通信的零级文件。 当守护进程启动和停止时,它们被创build和销毁。 他们可以安全地被忽略。

你可以用tar <my_options> 2> >(grep -v 'socket ignored' >&2)