需求说明:公司要求对某个盘的某个文件进行备份(win7的系统作为服务器)
解决思路:首先看windows自身的备份或copy命令是否可以实现,然后再用java调用dos命令(ps:当然php等语言也可以实现)。
命令1(copy):只能对单个文件进行备份。所以放弃此种方法。
命令2(wbadmin):对于win7是致命的打击,因该命令在win7上有限制,只能对整个盘进行备份而且要求盘是nfs格式的(至少我的电脑是这样的),更致命的 该命令是只能 备份,不能还原(ps:win server 2008是可以的)。所以放弃此种方法。
命令3(ftp):备份文件夹是需要压缩,公司要求不压缩(ps:压缩的话也是可以实现的)。所以放弃 。
命令4(xcopy):可以进行多文件的copy,命令格式 a.本机--xcopy D:\SFILE F:\DFILE 远程主机:--xcopy D:\SFILE \\IP\SHARE /s/e/d/i(/d可以实现“增量备份”)。所以此种方法是可行的
ps:(1.远程共享的方式需要用net use \\ip\share "password" /user:"username" 命令打开连接后,才能进行copy; 2.c盘下的文件copy不完整,如users目录下的只能拷贝用户的数据,应用程序不能,如果是win2008可用wbadmin实现,具体命令格式可参考微软的官方api)
测试部分:windows系统是可以的,接下来就是像linux的操作系统了。首先第一步是就解决win和linux之间的共享问题了。这里是ubuntu系统,可以用samba服务器实现。
下面是ubuntu的samba服务器的搭建工程:
1.安装samba服务器(ps如果连接不到下载源的话可以重设下载源,设好后要删除原来的下载源,否则将会出错,如何重设下载源可以在网上查找这里不再列出)
sudo apt-get install samba
sudo apt-get install smbfs
2.修改配置文件# vi /etc/samba/smb.conf
[global]
security = share
[homes]
comment = Home Directories
browseable = no
write list = root
read list = root
3.添加用户
smbpasswd -a root
4.重启服务
/etc/init.d/samba restart
5.文件copy
C:\Users\Administrator>net use \\192.168.1.30 "123" /user:"root"
命令成功完成。
C:\Users\Administrator>xcopy F:\users\test \\192.168.1.30\root\test /s/e/i
覆盖 \\192.168.1.30\root\test\test.txt (Y:是/N:否/A:全部)?a
F:\users\test\test.txt
F:\users\test\新建 Microsoft Excel 工作表.xls
F:\users\test\Contacts\Administrator.contact
F:\users\test\Desktop\Setup.exe
F:\users\test\Desktop\音速烈火战神.lnk
6.测试通过