是否有一个简单的shell命令/脚本支持排除某些文件/文件夹被存档?
我有一个目录需要使用子目录进行存档,该子目录包含许多我不需要备份的非常大的文件.
不完全解决方案:
该tar --exclude=PATTERN命令与给定模式匹配并排除这些文件,但我需要忽略特定文件和文件夹(完整文件路径),否则可能会排除有效文件.
我还可以使用find命令创建文件列表并排除我不想存档的文件并将列表传递给tar,但这仅适用于少量文件.我有成千上万.
我开始认为唯一的解决方案是创建一个文件,其中包含要排除的文件/文件夹列表,然后使用rsync --exclude-from=file将所有文件复制到tmp目录,然后使用tar来存档该目录.
谁能想到更好/更有效的解决方案?
编辑:cma的解决方案效果很好.最重要的是--exclude='./folder' 必须在tar命令的开头.完整命令(cd首先,所以备份是相对于该目录):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
Run Code Online (Sandbox Code Playgroud) 我需要从服务器下载文件到我的桌面.(UBUNTU 10.04)我没有对服务器的Web访问权限,只有ssh.
如果有帮助,我的操作系统是Mac OS X和iTerm 2作为终端.
如果我想找到两个目录树之间的差异,我通常只执行:
diff -r dir1/ dir2/
Run Code Online (Sandbox Code Playgroud)
这准确地输出了相应文件之间的差异.我有兴趣只获取内容不同的相应文件列表.我假设这只是一个传递命令行选项的问题diff,但我在手册页上找不到任何内容.
有什么建议?
我正在尝试编写一个小脚本来将当前目录更改为我的项目目录:
#!/bin/bash
cd /home/tree/projects/java
Run Code Online (Sandbox Code Playgroud)
我将此文件保存为proj,添加了执行权限chmod,并将其复制到/usr/bin.当我通过以下方式调用它时
proj,它什么都不做.我究竟做错了什么?
我知道在Linux中,要将屏幕输出重定向到文件,我可以使用>或tee.但是,我不确定为什么部分输出仍然输出到屏幕而不写入文件.
有没有办法将所有输出重定向到文件?
如果我打开我在Windows中创建的文件,则所有行都以^M.
如何一次删除这些字符?
这里详细介绍了这个问题.
如何衡量Linux中应用程序或进程的内存使用情况?
从了解Linux上的内存使用情况的博客文章来看,ps这不是用于此意图的准确工具.
为什么
ps"错"根据您的观察方式,
ps不会报告进程的实际内存使用情况.它真正做的是显示每个进程在运行的唯一进程中将占用多少实内存.当然,典型的Linux机器在任何给定时间都有几十个进程运行,这意味着报告的VSZ和RSS数量ps几乎肯定是错误的.
这是否可以grep连续使用?
我的意思是一种tail -f <file>命令,但grep在输出上只是为了保留我感兴趣的行.
我已经尝试了,tail -f <file> | grep pattern但似乎grep只能执行一次tail,也就是说永远不会.
有没有一种简单的方法可以打印完整的路径file.txt?
file.txt = /nfs/an/disks/jj/home/dir/file.txt
Run Code Online (Sandbox Code Playgroud)
该 <command>
dir> <command> file.txt
Run Code Online (Sandbox Code Playgroud)
应该打印
/nfs/an/disks/jj/home/dir/file.txt
Run Code Online (Sandbox Code Playgroud) 如何递归计算Linux目录中的文件?
我找到了这个:
find DIR_NAME -type f ¦ wc -l
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,它返回以下错误.
find:paths必须在表达式之前:|