`
mylove2060
  • 浏览: 335888 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

windows数据自动压缩为tar.gz文件,支持linux,linux 拷贝windows主机上的文件

 
阅读更多
windows2003下数据压缩打压缩包
@echo off

set day=%date:~8,2%
set month=%date:~5,2%
set year=%date:~0,4%
set yyyymmdd=%year%%month%%day%

set dataDir=F:/data/
set dataDisk=F:
set datafiles=*.dat

set sshDir=C:/Program Files/OpenSSH/home/Administrator/work
set sshDisk=C:

set stockMarket=ShenZhen
set tarPackagefile=%stockMarket%-%yyyymmdd%.tar
set dataInfoListfile=%stockMarket%HostDataInfoList-%yyyymmdd%.txt
set gzipPackagefile=%tarPackagefile%.gz
set md5file=%stockMarket%Checkmd5-%yyyymmdd%.windows

echo %packagefile%
echo %dataInfoListfile%
echo %gzipPackagefile%
echo %md5file%


@echo 检查目录是否存在
if exist "%dataDir%"  (@echo %dataDir% 目录存在) else (@echo %dataDir% 目录不存在) 
if not exist "%dataDir%" goto quit

if exist "%sshDir%"  (@echo %sshDir% 目录存在) else (@echo %sshDir% 目录不存在)
if not exist "%sshDir%"  goto quit

@echo 进入当前目录:cd %dataDir%
cd\
%dataDisk%
cd %dataDir%
if exist %tarPackagefile% (@echo 删除文件:"%gtarPackagefile%")
if exist %tarPackagefile% del %tarPackagefile%

if exist %gzipPackagefile% (@echo 删除文件:"%gzipPackagefile%")
if exist %gzipPackagefile% del %gzipPackagefile%

@echo 进入当前目录:cd %sshDir%
cd\
%sshDisk%
cd %sshDir%

if exist %dataInfoListfile% (@echo 删除文件:"%dataInfoListfile%")
if exist %dataInfoListfile% del %dataInfoListfile%

if exist %md5file% (@echo*删除文件:"%md5file%")
if exist %md5file% del %md5file%

if exist %gzipPackagefile% (@echo 删除文件:"%gzipPackagefile%")
if exist %gzipPackagefile% del %gzipPackagefile%

@echo 进入当前目录:cd %dataDir%
cd\
%dataDisk%
cd %dataDir%

@echo 获取目录%dataDir%下文件名和大小并存入文件 "%sshDir%/%dataInfoListfile%" 
for /f "delims=" %%a in ('dir /b/a-d/oN *.*') do echo %%a %%~za >> "%sshDir%/%dataInfoListfile%"

@echo 进入当前目录:cd %sshDir%
cd\
%dataDisk%
cd %dataDir%

@echo 归档目录%dataDir%下原始文件为 "%tarPackagefile%" ......
tar -cvf %tarPackagefile%  %datafiles%
@echo;

@echo 正在压缩 "%tarPackagefile%" 为: %gzipPackagefile% ......
if exist %tarPackagefile% (gzip "%tarPackagefile%")

@echo 正在移动文件%gzipPackagefile% ,从%dataDir%到%sshDir%
if exist %gzipPackagefile% (move "%gzipPackagefile%" "%sshDir%")

@echo 进入当前目录:cd %sshDir%
@echo 检查文件是否创建成功......

cd\
%sshDisk%
cd %sshDir%

if exist "%sshDir%/%dataInfoListfile%" (@echo 成功创建 "%dataInfoListfile%" ) else (@echo 创建 "%dataInfoListfile%" 失败)
if exist "%sshDir%/%gzipPackagefile%" (@echo 成功创建 "%gzipPackagefile%") else (@echo 创建 "%gzipPackagefile%" 失败)
if exist "%sshDir%/%gzipPackagefile%" (md5sum -b %gzipPackagefile% >> %md5file%) else (@echo 创建 "%md5file%" 失败)
if exist "%sshDir%/%md5file%" (@echo 成功创建 "%md5file%") else (@echo 创建 "%md5file%" 失败)
@echo;
@echo;
@echo;

:quit
exit



linux拷贝windows主机上的文件
#主机IP
hostIp='192.168.1.254'

#主机端口
port='22'

#网络传输带宽 例如:1000/8=125kB/s   8000/8=1MB/S    10000/8=1.25MB/s
networkBandwidth=10000

#主机用户登录名
user='admin'

#主机本地存放的数据目录
hostLocalDir='/home/admin/work'

#远程目录
hostdir=$user'@'$hostIp':'$hostLocalDir


#本地存储目录
localdir='/home/cyp/Desktop'


#定义日志输出类型 0:OK message Type,1:Error Message type,2:Label Message Type
okType=0
errorType=1
sysType=2



#系统提示信息
shellStart='**********************************ShellStart**********************************'
shellEnd='**********************************ShellEnd**********************************'

#日志打印函数
printlogMsg()
{
	#体统时间
	yyyymmddhhmmss=$(date +"%Y-%m-%d %H:%M:%S")
	echo ''$1','$2'',$yyyymmddhhmmss >> $localdir/$resultLogfile
	echo ''$1','$2'',$yyyymmddhhmmss >> $localdir/$historyResultLogfile
}

#获取系统时间,格式为YYYYMMDD
yyyymmdd=$(date +%Y%m%d)

#定义原始文件压缩文件名
stockMarket='ShenZhen'

#原始文件压缩包文件名
packagefile=$stockMarket-$yyyymmdd'.tar.gz'

#原始文件压缩包md5验证windows编码格式文件
md5WindowsFormatfile=$stockMarket'Checkmd5-'$yyyymmdd'.windows'

#原始文件压缩包md5验证unix编码格式文件
md5UnixFormatfile=$stockMarket'Checkmd5-'$yyyymmdd'.unix'

#原始文件压缩包md5验证unix编码格式临时文件
tempCheckMd5Resultfile=$stockMarket'TempCheckmd5-'$yyyymmdd'.txt'

#存储原始文件压缩包信息列表临时文件
tempDataInfoListfile=$stockMarket'TempDataInfoList-'$yyyymmdd'.txt'

#存储原始文件压缩包信息列表文件
clientDataInfoListfile=$stockMarket'ClientDataInfoList-'$yyyymmdd'.txt'

#存储原始文件信息列表文件
hostDataInfoListfile=$stockMarket'HostDataInfoList-'$yyyymmdd'.txt'

#最新脚本运行日志记录
resultLogfile=$stockMarket'CheckResult-'$yyyymmdd'.log'

#历史脚本运行日志记录,存了当天所有的运行日志
historyResultLogfile=$stockMarket'HistoryCheckResult-'$yyyymmdd'.log'

printlogMsg $sysType $shellStart
#-------------------------------------------------------------------------
#判断本地硬盘Unix编码格式文件
if [ -f "$localdir/$md5UnixFormatfile" ]; then  
	echo 'deleting file:' '"'$md5UnixFormatfile'"'
	rm $localdir/$md5UnixFormatfile
fi  

#判断本地硬盘删除文件
if [ -f "$localdir/$clientDataInfoListfile" ]; then  
	echo 'deleting file:' '"'$clientDataInfoListfile'"'
	rm $localdir/$clientDataInfoListfile
fi  

#判断本地硬盘删除文件
if [ -f "$localdir/$hostdataInfoListfile" ]; then
	echo 'deleting file:' '"'$hostdataInfoListfile'"'
	rm $localdir/$hostdataInfoListfile
fi  


#判断本地硬盘删除文件
if [ -f "$localdir/$resultLogfile" ]; then
	echo 'deleting file:' '"'$resultLogfile'"'
	rm $localdir/$resultLogfile
fi  

#判断主机IP是否ping通,并输出结果写入日志文件
ping -c 1 $hostIp
if [ $? -eq 0 ]
then
	printlogMsg  $sysType 'HOST "'$hostIp'" is online'
else
	printlogMsg  $sysType 'HOST "'$hostIp'" is offline'
	quit
fi


#复制原始文件压缩包,并输出结果写入日志文件
if scp -l $networkBandwidth -P $port -r $hostdir/$packagefile $localdir
then
	printlogMsg $okType 'Succeed to copy file: "'$packagefile'" from Host:'$hostIp' Port:'$port
else
	printlogMsg $errorType 'Failed to copy file: "'$packagefile'" from Host:'$hostIp' Port:'$port	
fi

#复制原始文件压缩包md5验证文件,并输出结果写入日志文件
if scp -l $networkBandwidth -P $port -r $hostdir/$md5WindowsFormatfile $localdir
then
	printlogMsg $okType 'Succeed to copy file: "'$md5WindowsFormatfile'" from Host:'$hostIp' Port:'$port
else
	printlogMsg $errorType 'Failed to copy file: "'$md5WindowsFormatfile'" from Host:'$hostIp' Port:'$port
fi

#拷贝原始文件信息列表文件,并输出结果写入日志文件
if scp -l $networkBandwidth -P $port -r $hostdir/$hostDataInfoListfile $localdir
then
	printlogMsg $okType 'Succeed to copy file: "'$hostDataInfoListfile'" from Host:'$hostIp' Port:'$port
else
	printlogMsg $errorType 'Failed to copy file: "'$hostDataInfoListfile'" from Host:'$hostIp' Port:'$port
fi

#转化windows 编码格式成Unix编码
sed -e 's/.$//' $localdir/$md5WindowsFormatfile >> $localdir/$md5UnixFormatfile

#测试远程去的文件,md5sum 验证完整性
cd $localdir
md5sum -c $md5UnixFormatfile >> $tempCheckMd5Resultfile

#读取Md5验证后的结果文件,并判断结果写入日志文件
while read md5line
do

	checkMd5fileName=`echo $md5line | awk '{print $1}'`
  	checkedMd5Status=`echo $md5line | awk '{print $2}'`
	
	if [ $checkedMd5Status = "FAILED" ]; then
		printlogMsg $errorType $checkMd5fileName'md5 checking failed'
	elif [ $checkedMd5Status = "OK" ]; then
		printlogMsg $okType  $checkMd5fileName'md5 checking OK'
	else
		printlogMsg $errorType $line
	fi
done < $localdir/$tempCheckMd5Resultfile

#获取解压文件存储文件信息列表,输出到指定临时文件当中
tar -tvf $localdir/$packagefile >> $localdir/$tempDataInfoListfile

#解析临时文件,取文件名和文件大小信息,并保存到本地指定文件当中,此文件为本地文件信息列表文件,数据最终来源压缩包里的信息
while read line
do
	filePath=`echo $line | awk '{print $6}'`
	fileName=`echo $filePath |awk -F\/ '{print $NF}'`
  	fileSize=`echo $line | awk '{print $3}'`
	echo $fileName $fileSize >> $localdir/$clientDataInfoListfile

done < $localdir/$tempDataInfoListfile


#主机信息文件与本地获取的文件信息进行比对,比较文件名和文件大小,并输出文件验证结果写入日志文件
while read line
do
	hostfileName=`echo $line | awk '{print $1}'`
  	hostfileSize=`echo $line | awk '{print $2}'`
	condition='\<'$hostfileName'\>'
	count=`grep -c $condition $clientDataInfoListfile`
	if [ $count -eq 1 ]; then
		clientIndexLine=`grep $condition $clientDataInfoListfile`
		clientfileSize=`echo $clientIndexLine | awk '{print $2}'`
		if [ $hostfileSize -ne $clientfileSize ]; then
			printlogMsg $errorType 'The size of "'$hostfileName'" is not correct.'
		else
			printlogMsg $okType 'The size of "'$hostfileName'" is correct.'
		fi
	else 
		printlogMsg $errorType 'The file "'$hostfileName'" is lost.'
	fi
done < $localdir/$hostDataInfoListfile


#删除临时本地硬盘windows编码格式文件
if [ -f "$localdir/$md5WindowsFormatfile" ]; then  
	echo 'deleting file:' '"'$md5WindowsFormatfile'"'
	rm $localdir/$md5WindowsFormatfile
fi  

#删除临时本地硬盘windows编码格式文件
if [ -f "$localdir/$tempDataInfoListfile" ]; then  
	echo 'deleting file:' '"'$tempDataInfoListfile'"'
	rm $localdir/$tempDataInfoListfile
fi  


#删除原始文件压缩包md5验证unix编码格式临时文件
if [ -f "$localdir/$tempCheckMd5Resultfile" ]; then  
	echo 'deleting file:' '"'$tempCheckMd5Resultfile'"'
	rm $localdir/$tempCheckMd5Resultfile
fi  

#删除存储原始文件信息列表文件
if [ -f "$localdir/$hostDataInfoListfile" ]; then  
	echo 'deleting file:' '"'$hostDataInfoListfile'"'
	rm $localdir/$hostDataInfoListfile
fi  

#删除存储原始文件压缩包信息列表文件
if [ -f "$localdir/$clientDataInfoListfile" ]; then  
	echo 'deleting file:' '"'$clientDataInfoListfile'"'
	rm $localdir/$clientDataInfoListfile
fi 

printlogMsg $sysType $shellEnd

分享到:
评论

相关推荐

    MiniGUI1.6.10的交叉编译环境的建立

    9. **压缩库**:zlib-1.2.3.tar.gz,用于数据压缩。 10. **字体库**:freetype-1.3.1.tar.gz,用于渲染文本。 #### 三、搭建步骤 ##### 第一步:创建工作目录 在宿主机上创建一个新的目录,用于存放所有编译相关...

    Linux 常用命令 Linux 常用命令

    xargs 命令可以将所有图片文件拷贝到外部驱动器、将系统中所有 jpd 文件压缩打包、下载文件中列出的所有 url 对应的页面等。 例如,将所有图片文件拷贝到外部驱动器:`ls *.jpg | xargs -n1 -i cp {} /external-...

    linux常用命令大全 cp mv scp rm等

    - 创建.tar.gz文件: `tar -czvf archive.tar.gz folder` - 解压.tar.gz文件: `tar -xzvf archive.tar.gz` #### 9. `zip`: 压缩文件 `zip`命令用于压缩文件,而`unzip`则用于解压缩。 **示例**: - 压缩文件: `zip...

    新手在linux安装是虚拟机的安装

    - `cp /mnt/vmware-linux-tools.tar.gz/tmp`(拷贝文件到tmp目录) - `umount /dev/cdrom`(卸载光驱) - `cd /tmp` - `tar xzf vmware-linux-tools.tar.gz` - `cd vmware-tools-distrib` - `./vmware-install...

    Linux常用文件传输方法

    rcp命令用于在两台计算机之间进行文件拷贝,支持文件到文件的拷贝以及将文件或目录拷贝到另一个目录中。 ##### 基本语法 rcp命令的语法如下: ```bash rcp [-px] [-r] [-k realm] file1 file2 rcp [-px] [-r] [-k ...

    利用VMwaretTools实现CentOS_Linux_虚拟机与宿主机XP的资源共享

    为了使CentOS Linux虚拟机能够访问宿主机Windows XP上的文件,我们需要设置共享文件夹。通过虚拟机菜单中的“VM”-&gt;“Settings”-&gt;“Options”选项,找到“Shared Folders”项。在这里,你可以添加想要共享的文件夹...

    linux在TQ2440上移植5--移植串口传输协议.pdf

    在探讨《Linux在TQ2440上移植5—移植串口传输协议》这一主题时,我们聚焦于如何在TQ2440平台上移植并优化Linux系统下的串口通信功能,尤其关注了rzsz工具的移植过程,这对于嵌入式系统开发者而言具有重要的实践意义...

    linux开发环境建立,内核的裁剪编译下载整理.pdf

    3. 在Linux终端中挂载光驱,拷贝VMware Tools的tar.gz文件到指定目录并解压。 4. 运行解压后的安装脚本,一路回车完成安装。 5. 重启系统并在VMware设置中配置共享文件夹,实现Linux与Windows之间的文件共享。 交叉...

    分析Linux系统课程期末考题集合.pdf

    - `compress`和`uncompress`命令用于.gz文件的压缩和解压缩,而`tar`、`gzip`则用于创建和处理.tar.gz格式的归档文件。 - `awk`和`sed`是文本处理工具,具备C语言风格的语法,常用于数据过滤和转换。 6. 网络通信...

    linux基本培训指南

    - 示例:`tar -czf 1.tar.gz 111`,将 `111` 文件压缩为 `1.tar.gz`。 - 示例:`tar -xvf 1.tar.gz`,解压 `1.tar.gz`。 16. **查看日期**:`date` - 查看系统的日期和时间。 - 示例:`date`。 17. **关机、...

    Ubuntu安装虚拟机工具VMware Tool详细教程.docx

    解决办法:直接在虚拟机设置里面添加一个 CDROM,指向主机里虚拟机程序安装目录下的 linux.iso 镜像文件(这个 linux.iso 文件就是你刚才下的 VMware Tools 文件镜像),然后重启虚拟机,你就能看到桌面上的 VMware ...

    QIHUA-X63平台Linux QT5开发手册.pdf

    它提供的SDK安装包位于“QIHUA-X63光盘/SDK源码/LinuxQT5”目录下的“qihua-x63-linux3.10.tar.gz”文件中。开发者可以利用这些资源开发专用的图形界面应用或精简系统应用。 2. Linux QT源码目录说明 Linux QT源码...

    Mplayer移植详细过程

    - 通过`tar -xzvf arm-linux-gcc-4.3.2.tar.gz -C /usr/local/arm`命令解压交叉编译器,并将路径添加到环境变量中。 2. **解压libmad-0.15.1b.tar.gz,并编译**: - 使用`tar -zxvf libmad-0.15.1b.tar`命令解...

    linux上安装apache

    2. 解压缩Apache源代码包,如`tar xzvf /media/httpd-2.x.x.tar.gz`。 3. 进入解压后的目录,执行`./configure --prefix=/usr/local/apache2`进行配置。 4. 使用`make`命令编译源代码。 5. 执行`make install`安装...

    linux启动盘制作过程

    2. **拷贝主机上的`passwd`, `group`, `shadow`文件** 至 `rootfs/etc/` 目录下; 3. **创建`etc/sysconfig/`目录下的`HOSTNAME`文件**,内容自定义; 4. **`etc/inittab` 文件**,内容如下: ``` # inittab for ...

    linux离线安装putty的方法

    下载完成后,将压缩文件拷贝到目标Linux主机上,例如放置在`/home`目录下。 2. **准备编译环境** 在Linux系统上安装PuTTY通常需要一个编译环境。如果您的系统已经具备了必要的编译工具,则可以直接跳过此步骤;...

    hadoop的伪分布式模式配置与安装伪分布式模式

    解压缩JDK和Hadoop的tar.gz文件到创建的目录,并在每个节点上创建软链接,将JDK和Hadoop路径链接到 `/usr/gd/` 目录下的相应文件夹。 4. **创建用户**: 创建名为`hduser`的用户,并为其设置密码。这将在三台主机...

    [原创]Qtopia PDA 2.2.2 交叉编译过程1

    标题和描述中的“[原创]Qtopia PDA 2.2.2 交叉编译过程”指向了一篇关于在Linux环境...通过遵循文章中的指导,嵌入式开发人员可以顺利完成Qtopia PDA 2.2.2的交叉编译工作,从而为ARM平台上的应用开发提供强大的支持。

    linux命令大全

    - **tar zcvf /home/abc.tar.gz /home/abc** - 打包并用gzip压缩 - **tar jcvf /home/abc.tar.bz2 /home/abc** - 打包并用bzip2压缩 若要解压缩,只需将`c`替换为`x`。 #### 四、关机与重启机器 1. **shutdown...

Global site tag (gtag.js) - Google Analytics