把备份的exim邮件放到某用户目录下:/home/spool/imap/domain/mydomain.com/user/admin/Sent
Sent目录为“已发送邮件”的目录 ,copy 了几百M后,操作如下:su - cyrus ; ./bin/reconstruct -r 后,进入webmail/outlook里看,还是没发现刚才恢复的邮件。纳闷,很久以前,也是这方法恢复的,不可能不行。
赫然发现,恢复的邮件的权限不对,于是修改为cyrus:cyrus ,再次执行./bin/reconstruct -r 一样不行。忽然想起,exim的邮件存储方式为:数字. (数字+.) 。
只有把刚才复制的邮件改名才行。怎么办呢?2000多封email,不可能手动的。用进废退,以前我还写过一个shell来立刻解决的,现在完全想不起,(可能以前是用php来解决的,这个比摸索shell来解决问题简单得多。)
解决方法:
cd /home/spool/imap/domain/mydomain.com/user/admin/Sent
ls | sort -n | awk '{system("mv " $0 " " sprintf("%13d.", ++i))}'
awk在这里就是把改目录下所有的文件,都更改为:数字.
如果本来就存在很的话,要小心索引重复覆盖,可以把i先定义, 改为大的数字,如:
ls | sort -n | awk 'BEGIN{i=8000}{system("mv " $0 " " sprintf("%13d.", ++i))}'
以上方法可以应用到 批量修改文件 名:
ls | sort -n | awk '{system("mv " $0 " " sprintf("%13d.html", ++i))}'
阅读(1331) | 评论(0) | 转发(0) |