Chinaunix首页 | 论坛 | 博客
  • 博客访问: 522566
  • 博文数量: 53
  • 博客积分: 2265
  • 博客等级: 大尉
  • 技术积分: 574
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-15 16:50
文章分类

全部博文(53)

文章存档

2019年(1)

2018年(2)

2016年(2)

2015年(1)

2014年(6)

2013年(5)

2012年(7)

2011年(16)

2010年(13)

分类: BSD

2011-01-21 16:54:28

把备份的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))}'
阅读(1335) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~