客户有个需求,要找到以他们的企业ID命名的文件夹里的所有文件,并且保留原先完整的路径,因为完整路径已经写到了数据库里。
1. 命令
# find /recdata/saas_ali/call -name 20001371 -type d | xargs -i cp -a --parents {} /mobilehd
//上述命令表示为,查找名称为20001371的文件夹,并将其以保留完整路径的方式拷贝到移动硬盘挂载目录/mobilehd下。
// --parents为cp命令的参数,表示拷贝全路径。
2. 一般拷贝文件需要长时间运行,所以考虑到运行命令后终端经常被结束掉,导致拷贝被终止的情况,笔者有以下解决方法。
- crontab计划任务,但是要注意精确到分时日月周的每一项或者及时删除和注释,防止重复执行,操作比较复杂。
- at临时计划任务,操作简单。
- nohup后台运行方式(推荐项),操作简单。
linux下命令以'&'结尾的时候表示后台运行,但是当终端关闭后此程序将被终止,所以我们要使用nohup(当终端关闭后不挂起该命令)。
所以我们将命令优化为:
nohup find /recdata/saas_ali/call -name 20001371 -type d | xargs -i cp -a --parents {} /mobilehd &
但是有个注意事项:
有时候使用nohup会有问题,当把终端暴力关闭后,进程会自动被关闭。
所以操作的时候使用以下顺序来确保进程不被中断。
① 输入命令:nohup find /recdata/saas_ali/call -name 20001371 -type d | xargs -i cp -a --parents {} /mobilehd &
②敲'回车键'
③输入exit退出终端