如何编写一个shell,拷贝一个备份文件后把原文件清空?

sh/bash/dash/ksh/zsh等Shell脚本
回复
khler
帖子: 4
注册时间: 2009-11-25 21:22
送出感谢: 0
接收感谢: 0

如何编写一个shell,拷贝一个备份文件后把原文件清空?

#1

帖子 khler » 2011-01-30 9:38

我就是想备份一下我的一个程序的日志,结果在shell中执行 cp 命令时提示没有权限:

代码: 全选

#! /bin/sh
currdate=$( date +%Y%m%d )
logfile="/usr/local/twslog/tws.log"
cp $logfile "/usr/local/twslog/$currdate.log"
cat "" > $logfile
运行时提示:
cp: 无法打开 “/usr/local/twslog/tws.log” 读取数据: Permission denied
./twslogbaker.sh: 5: cannot create /usr/local/twslog/tws.log: Permission denied

各位老大,在shell中如何获取权限啊?上面的问题如何处理?
头像
灰色小狼
帖子: 4573
注册时间: 2008-12-06 10:38
系统: Arch
送出感谢: 21 次
接收感谢: 30 次

Re: 如何编写一个shell,拷贝一个备份文件后把原文件清空?

#2

帖子 灰色小狼 » 2011-01-30 10:09

sudo执行脚本
头像
大宝
帖子: 2870
注册时间: 2008-06-30 22:32
送出感谢: 0
接收感谢: 10 次
联系:

Re: 如何编写一个shell,拷贝一个备份文件后把原文件清空?

#3

帖子 大宝 » 2011-01-30 10:33

为何不用“mv”,而是用“cp”?
khler
帖子: 4
注册时间: 2009-11-25 21:22
送出感谢: 0
接收感谢: 0

Re: 如何编写一个shell,拷贝一个备份文件后把原文件清空?

#4

帖子 khler » 2011-01-30 13:55

2 楼 灰色小狼 :
我的脚本被另一个脚本调用,用sudo不行吧?要手工输入密码?

3 楼 大宝 :

mv 替换 cp , good~~~~
tusooa
帖子: 6546
注册时间: 2008-10-31 22:12
系统: 践兔
送出感谢: 6 次
接收感谢: 10 次
联系:

Re: 如何编写一个shell,拷贝一个备份文件后把原文件清空?

#5

帖子 tusooa » 2011-02-01 16:07

no,no,no...
log文件一般是要即时写入的,mv之后可能会导致错误。

代码: 全选

cat "" > $logfile
用法是错的。不能cat '', 要echo > xxx

sudo,可以visudo, 自己改,让执行这个脚本不用输密码。

代码: 全选

] ls -ld //
头像
ebok
帖子: 852
注册时间: 2008-02-15 0:09
送出感谢: 0
接收感谢: 0

Re: 如何编写一个shell,拷贝一个备份文件后把原文件清空?

#6

帖子 ebok » 2011-02-01 18:16

代码: 全选

cat /dev/null >filename
Somebody think they are full of niubility, so they play a zhuangbility, but only reflect their shability.
头像
大宝
帖子: 2870
注册时间: 2008-06-30 22:32
送出感谢: 0
接收感谢: 10 次
联系:

Re: 如何编写一个shell,拷贝一个备份文件后把原文件清空?

#7

帖子 大宝 » 2011-02-01 21:32

他可以把这个执行放在关机的时候进行,只是 dpkg 等日志移走的确不妥——但我的 U 盘系统就是用类似的手段干的,目的是为了减少读写 U 盘的频次
头像
byZh
帖子: 198
注册时间: 2009-01-11 21:38
送出感谢: 0
接收感谢: 0

Re: 如何编写一个shell,拷贝一个备份文件后把原文件清空?

#8

帖子 byZh » 2011-02-10 16:58

你的想法早就有人实现了,试一试
logrotate
以缺德服人......
回复

回到 “Shell脚本”