假设有一个名为domains
in的文件夹glassfish
。它有domain1
,domain2
...。domainN
我想从目录中取出所有内容domain1
并将logs
它们保存到/home/user/backup
目录中。
我可以手动执行此操作,
cp -R /home/user/glassfish/domains/domain1 /home/user/backup
rm -rf /home/user/backup/domain1/logs
Run Code Online (Sandbox Code Playgroud)
但我怎样才能更轻松地做到这一点呢?
roa*_*ima 18
您可以使用rsync
代替cp
. 除了有一个排除选项外,本地到本地副本的基本相同
rsync --archive --exclude /logs /home/user/glassfish/domains/domain1 /home/user/backup
Run Code Online (Sandbox Code Playgroud)
您可以使用该cp
命令并排除包含日志的文件夹,!(excluded_folder)
如果您不想使用rsync
或tar
cp -var /home/user/glassfish/domains/domain1/!(/home/user/backup/domain1/logs) /home/user/backup
Run Code Online (Sandbox Code Playgroud)
或者
cp -R /home/user/glassfish/domains/domain1/!(/home/user/backup/domain1/logs) /home/user/backup
Run Code Online (Sandbox Code Playgroud)
如果你想排除更多文件夹,你可以使用|
类似的
!(excluded_folder1|excluded_folder2|excluded_folder3)
确保您的 shell 支持扩展模式匹配(例如,启用该extglob
选项的 Bash)。
如果你想在 bash 脚本中使用它:
#!/bin/bash
shopt -s extglob
cp -var /home/user/glassfish/domains/domain1/!(/home/user/backup/domain1/logs) /home/user/backup
Run Code Online (Sandbox Code Playgroud)
如果您收到类似错误!": event not found"
检查这个帖子: