[LINUX] 用"tar -c"打包文件时,如何排除其中的链接文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LINUX] 用"tar -c"打包文件时,如何排除其中的链接文件?相关的知识,希望对你有一定的参考价值。

现在我想把当前目录的所有文件打包,但其中很多地方存在链接文件,如:
.pdt:
total 0
lrwxrwxrwx 1 yr yr 18 2010-10-02 11:53 Link to Documents -> /home/yr/Documents
lrwxrwxrwx 1 yr yr 18 2010-10-02 11:53 Link to Downloads -> /home/yr/Downloads
使用tar时,就会把链接的目的地也包括进去。
请问如何排除所有链接文件?
硬链接当然会被加入归档。

现在感觉,只能不使用硬链接了。

参考技术A tar 默认情况下不会将链接文件加入归档

注意下你是否使用了 -h参数 只有加了-h参数才会发生你描述的情况

另外 tar没有选择文件类型的功能, 如果想实现该功能 , 可以用shell的循环 配合xargs 命令 并利用tar的增量归档功能来实现
参考技术B I don't know.
B girl force me to accomplish the assignment.

Linux 环境变量PROMPT_COMMAND

关于PROMPT_COMMAND环境变量

Bash在显示PS1之前先执行PROMPT_COMMAND定义的内容,而PS1也就是linux的命令提示符
我们可以用它来记录用户输入历史

[root@localhost opt]# export PROMPT_COMMAND=‘{ date "+%Y-%m-%d %T ######### $(history 1 | { read x cmd; echo "$cmd";})"; }‘
[root@localhost opt]# pwd
/opt
2020-06-13 09:13:21 ######### 2020-06-13  09:13:21  pwd
[root@localhost opt]#

1.防止记录重复命令进行判断(如果控制台一直按回车,会不断重复记录最后一条命令)

function my_history(){
    if [ -f "/opt/history.log" ];then
        #获取最后一条命令
        last_command=`tail -n 1 /opt/history.log |cut -c 21-`
    fi
    date_time="$(date "+%Y-%m-%d %T")"
    msg="######### $(history 1 | { read x cmd; echo "$cmd";})"
    #判断当前命令和最后记录的命令不等才记录
    if [ "${last_command}" != "${msg}" ];then
        echo "${date_time} ${msg}" >> /opt/history.log
    fi
}
export PROMPT_COMMAND=my_history

以上是关于[LINUX] 用"tar -c"打包文件时,如何排除其中的链接文件?的主要内容,如果未能解决你的问题,请参考以下文章

Linux里面归档命令是啥?

linux c++ 如何获取 系统时间

Linux下软件的安装与管理

Linux如何安装tar.gz文件?

linux脚本时间变量调用

求linux shell写法