把linux的文件备份到windows上

主要内容

备份linux主机内容到windows机器上。

备份linux

使用tar备份的主要特点:

  • 保留权限
  • 适合备份整个目录
  • 可以选择不同的压缩方式
  • 如果选择不压缩还能实现增量备份,部份还原,参考man tar

tar的选项很多,根据具体要求选用。

tar命令增量备份linux目录:

tar -g snapshot -cvpzf $tarfile --exclude-from=$exclude_from $sourcedirectory

备份内容

全量与增量

上面的命令中,每次执行时会根据 snapshot 文件的内容进行增量备份。如果 snapshot 不存在,就对所有文件进行备份。

如果目标文件很大,进行全量备份会比较耗时。为了减轻服务器负担,日常进行增量备份,每周或者每月进行一次全量备份。

目标目录

上面的命令中,$sourcedirectory 是我们备份的对象目录,可以是一个目录或者多个目录,也可以指定为一个文件中的具体内容。比如可以设置成 /opt。这个目录下的所有文件会被打包,除了 –exclude-from 选项指定的文件或目录。–exclude-from 可以指定一个目录或者一个文件的路径,也可以指定为一个文件中的具体内容。

清理历史备份文件

上面的命令中,备份文件 $tarfile 保存在linux 本地。对于已经传送到远程服务器(windows)上的文件,需要定期删除。

如果文件保存在远程服务器上,应该由远程服务器自己负责文件的管理,不需要在linux上管理。

备份文件的转移

上面的命令中,假设文件保存在本地,定期上传到 windows 服务器。

需要准备:

  • window上的pscp,putty提供的类似scp的程序,用来在windows上与linux传递文件。
  • linux上开通远程访问接口,为pscp程序提供连接能力。

定期从linux上取得文件,并且上传一个标记文件,通知linux 文件传递完成,linux可以清理已经传递完成的文件。

恢复linux(未运行验证)

tar xvpfz tarfileC targetdirectory

这个命令会把 tarfile targetdirectory 目录上,需要特别注意。

对于增量备份的文件,可以反序进行增量恢复。

参考:

Centos使用tar命令做增量备份
centos7系统备份与还原
记录一下putty的pscp的用法

例子代码:

backupall.sh 每天12:30开始备份

#!/bin/bash
# /backup/backupall.sh

# define
dayofweek=`date "+%u"`
today=`date "+%Y%m%d"`
source=/
backup=/backup/
exclude_from=/backup/exclude_from

# action
cd $backup

# clean backuped files
for ff in `ls done/*.tar.gz.*`
do
  fff=${ff##*/}
  fff=${fff%.*}
  echo done file: ${fff}
  rm -f $ff
  rm -f $fff
done

# do backup
if [ $dayofweek -eq 6 ]; then
  tarfile = "$today"_full.tar.gz
  if [ ! -f $tarfile ]; then
    rm -rf snapshot
    tar -g snapshot -cvpzf $tarfile --exclude-from=$exclude_from $source
  fi
else
  tarfile = "$today"_incr.tar.gz
  if [ ! -f $tarfile ]; then
    tar -g snapshot -cvpzf $tarfile --exclude-from=$exclude_from $source
  fi
fi

echo $tarfile created.

exclude_from

/backup
/proc
/lost+found
/mnt
/media
/sys

backup_centos_server.bat 每天11:00,14:00开始转移文件

rem linux: backup files at 12:30
rem backup: get backup files at 11:00 and 14:00

@setlocal
@echo off
set backupPath=f:\backup\centos7server
set path=e:\term\putty
set PSCP=%path%\pscp.exe -pw
set PSCPP=Pscpp$ecret10
set remote=backup@10.10.132.199:/backup

rem get files
%PSCP% %PSCPP% %remote%/*.tar.gz %backupPath%\temp rem check files cd %backupPath% for /R temp %%f in (*.tar.gz) do ( echo %%f
  if %errorlevel% equ 0 (
    echo %%f > %%f.saved
    date /t >> %%f.saved time /t >> %%f.saved
    %PSCP% %PSCPP% %%f.saved %remote%/done ) ) rem clean files move %backupPath%\temp\*.tar.gz %backupPath% del /Q %backupPath%\temp\*.saved

例子代码没有考虑安全因素,注意!

    原文作者:郑文君
    原文地址: https://blog.csdn.net/tiaya/article/details/78717125
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞