作为一个Avamar的管理员或者使用者,我们都知道Avamar是有专门的管理控制台来控制和管理备份恢复操作的。而且随着版本的升级,Avamar控制台的界面也越来越人性化,管理操作起来也更容易了。对于Windows客户端来说,如果配置了DTLT,我们也是可以客户端管理备份恢复的。

 

但是呢,在实际工作中,我们还是会遇到一些需求,希望能在客户端通过命令行进行一些简单的备份恢复操作。作为一个习惯了使用图形界面工具的工程师,说实话,我个人是很不乐意通过命令行来执行一些任务的。不过既然有这种需求,作为一个勤劳的技术支持工程师,我还是帮大家搜集了一些常用命令并进行了一番测试来供大家参考。

 

使用过我们Avamar产品或者对它有一点了解的人,应该都听说过avtar这个进程。可以说avtar是我们Avamar的核心,我们数据传输都是通过它来进行的。所以我们这次的主题也肯定离不开avtar了。那么首先了解一下在Windows客户端我们使用avtar能做些什么基本操作呢?

  • 备份 --create or -c
  • 恢复 --extract or --get or -x
  • 删除备份 --delete
  • 列举备份 --backups
  • 列举备份内容 --list or -t
  • 验证一个备份 --validate
  • 显示备份日志--showlog

 

注意:

其中--backups, --list, --delete --showlog 可以运行在装有Avamar客户端插件的每个客户端或者Avamar服务器上面.

--create 此命令必须运行在您需要备份的客户端上面.

--extract 此命令必须运行在您需要恢复到的那台客户端上面.

 

另外,一些常用的参数:

用户名Username--id=

密码Password--ap= 或者 --password=

如果是在Avamar grid上面运行的话则不需要定义此参数。

Avamar服务器Server--server= 或者 --hfsaddr=

如果客户端注册在您需要联系的grid上面,此参数不需要定义。

客户端路径Client Path--account= 或者 --path=

生成日志路径--logfile=

备份的编号--labelnumber= or --sequencenumber=

  • 仅当使用—validate参数是需要定义
  • 如果没有定义的话,那么最近的备份会被使用

备份标签 --label=

这个是每个成功备份对应的标签,可以在Avamar控制台上面找到。

备份过期参数--expires=

用来定义备份什么时候过期

 

常见报错:

avtar Error <5126>: Login error 66: User not found in Avamar database

用户名不正确

 

avtar Error <5126>: Login error 69: Authentication failure  (Invalid password?  User disabled?)

密码不正确

 

avtar Error <5126>: Login error 74: Account not found in the Avamar database

  • 客户端路径不正确
  • 请使用您在Avamar GUI上面看到的全路径
  • 例如,客户端名字需要区分大小写

 

而且上面的报错都会导致最终报错如下:

avtar FATAL <5308>: Failed to initiate session with server

avtar Info <6149>: Error summary: 2 errors: 5308, 5126

avtar Info <5314>: Command failed (2 errors, exit code 10008: cannot establish connection with server (possible network or DNS failure))

 

下面是一些常用命令参考:

--create参考例子:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --create

这个命令将会备份server1所有文件系统到他注册到的Avamar grid.

 

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --create C:\test

这个命令将会备份server1上面的C:\test文件夹到他注册到的Avamar grid 下面是基于此命令做的测试的日志:

日志参考附件:backup with create command.txt


备份完成后,Avamar控制台上显示如下(label 137),因为没有指定备份过期日期,他的retention显示为“N

1.png


如果指定了--expire参数,结果如下:

日志请参考附件:Backup with create & expire command.txt

2.png

 

--backup参考例子:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --backups

 

此命令将会返回类似下面的结果:

avtar Info <7377>: Backups for /clients/server1 as of 2013-11-06 15:47:12 Mountain Standard Time

Date      Time    Seq Label           Size     Plugin Working directory         Targets

---------- -------- ----- ----------------- ---------- -------- --------------------- -------------------

2013-11-06 15:19:07     2                           3K Windows  c:\avamartemp         c:\test

2013-11-06 15:17:09     1                           6K Windows  c:\avamartemp         c:\test

 

The “Seq” column lists the “sequencenumber” or “labelnumber”

具体日志信息参考下面测试结果:

日志请参考附件:avtar with backups flag.txt

 

--showlog参考例子:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 –showlog

日志请参考附件:avtar showlog flag.txt

 

  • 此命令将会把label1的备份日志输出到CMD窗口。
  • 日志最后不会有wrapup信息。
  • 为了更好查看日志信息,我们可以将结果输出到一个文件:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 --showlog > avtarlog.log

 

--list参考例子

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 –list

此命令将会输出类似下面的结果:

c:\

c:\test\

c:\test\avtarfilelist.txt

c:\test\extensions.txt

c:\test\diff\

c:\test\diff\1.txt

c:\test\diff\3.txt

 

如果您只需要查看某个目录下面的文件,可以在命令最后定义目录,例如:avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 –list C:\test\diff

 

日志请参考附件:avtar list.txt


当然,我们还可以把结果导出到某个文件便于查看:avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 –list > filelist.txt

 

avtar list to file.PNG.png

 

 

--extract参考例子:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 –extract

此命令会将labelnumber1的备份的所有内容恢复到原来路径。

 

Microsoft Windows [Version 6.1.7601]

Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

 

 

C:\Windows\system32>cd C:\Program Files\avs\bin

 

 

C:\Program Files\avs\bin>avtar --id=MCUser --ap=MCUser1 --path=/REPLICATE/gen4s-

util.sh.lab.emc.com/Darlene93/cnrdlid20l1c.corp.emc.com --labelnumber=137 --extr

act

avtar Info <5551>: Command Line: avtar --exclude=C:\Training --id=MCUser --passw

ord=**************** --account=/REPLICATE/gen4s-util.sh.lab.emc.com/Darlene93/cn

rdlid20l1c.corp.emc.com --sequencenumber=137 --extract

avtar Info <7977>: Starting at 2015-03-24 12:50:49 China Standard Time [avtar Ju

n 12 2014 08:56:14 7.1.100-302 Windows 7 Enterprise Edition Service Pack 1 64-bi

t-AMD64]

avtar Info <10793>: Single Instance Store Groveler Service NOT installed - WSS S

IS Manager will not be started.

avtar Info <6555>: Initializing connection (Avamar Deduplication Engine v2.0.0)

avtar Info <5552>: Connecting to Avamar Server (10.32.167.93)

avtar Info <5554>: Connecting to one node in each datacenter

avtar Info <5583>: Login User: "MCUser", Domain: "default", Account: "/REPLICATE

/gen4s-util.sh.lab.emc.com/Darlene93/cnrdlid20l1c.corp.emc.com"

avtar Info <5580>: Logging in on connection 0 (server 0)

avtar Info <5582>: Avamar Server login successful

avtar Info <10632>: Using Client-ID='91f70987c265c2c25177b5ea5ed29653b0a5e92a'

avtar Info <5550>: Successfully logged into Avamar Server [7.2.0-316]

avtar Info <5373>: 1 user exclude pattern entered.

avtar Info <5295>: Starting restore at 2015-03-24 12:50:49 China Standard Time a

s "CORP\lid20" on "cnrdlid20l1c" (4 CPUs) [7.1.100-302]

avtar Info <19114>: --restoreshortnames flag not specified; 8.3 names (if availa

ble in the backup) will not be restored with files/dirs. If the target OS suppor

ts 8.3 names, then the OS will create 8.3 names automatically.

avtar Info <16346>: Backup #137 created by avtar version 7.1.100-302

avtar Info <5949>: Backup file system character encoding is 65001 (UTF-8).

avtar Info <8745>: Backup from Windows 7 Enterprise Edition Service Pack 1 64-bi

t host "/REPLICATE/gen4s-util.sh.lab.emc.com/Darlene93/cnrdlid20l1c.corp.emc.com

" (cnrdlid20l1c) with plugin 3001 - Windows Filesystem

avtar Info <19850>: Backup #137 timestamp 2015-03-24 12:33:33 China Standard Tim

e, 152 files, 531.1 KB

avtar Warning <19107>: Unable to determine if there is enough disk space for the

specified restore.

avtar Info <5259>: Restoring backup to directory ""

avtar Warning <6777>: Cannot translate path '' to full path, proceeding with ori

ginal path

avtar Info <7324>: Volume Type for "\" is "NTFS", Supports Compression=1, Encryp

tion=1, ACLS=1, DataStreams=1, Reparse=1, Sparse=1, Hardlinks=1

avtar Info <6694>: Not creating drive/volume/server designator 'C:'

avtar Info <5262>: Restore completed

avtar Info <7925>: Restored 0 bytes from selection(s) with 531.1 KB in 152 files

, 8 folders (531.1 KB in 152 files skipped)

avtar Info <7883>: Finished at 2015-03-24 12:50:49 China Standard Time, Elapsed

time: 0000h:00m:01s

avtar Info <6645>: Not sending wrapup anywhere.

avtar Info <5314>: Command completed (2 warnings, exit code 0: success)

 

 

C:\Program Files\avs\bin>

 

 

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 --extract C:\test\diff

此命令会将labelnumber1的备份中的C:\test\diff目录的所有内容恢复到原来路径。

 

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 --extract --target=c:\restore

  • 会将备份恢复到c:\restore
  • c:\restore下面会创建原来的路径,例如:c:\restore\C\test\...

 

注意:如果需要恢复到另外一个客户端,需要在恢复到的客户端上面运行恢复命令。此命令仅限于恢复到同一客户端的不同路径。

 

--overwrite选项:

Always:将会覆盖所以已存在的文件。

Modified:如果备份中的文件的date/time 值和客户端上面的一直,将不再恢复此文件。

Never:保护客户端文件不会被覆盖。

Newest:如果备份中文件的date/time stamp比客户端上面的新,将被恢复出来。

Newname:将文件进行恢复,但是赋予它新的名字。例如myfile.txt 将会变为 myfile(1).txt


如果我们需要找出一个备份是否包含某个文件:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 --list | find /i “searchstring”

  • searchstring替换为您需要找的文件名字,需要加引号
  • 这个名字可以不是文件的全名,但是不能使用通配符。
  • 当然,如果结果比较多,您可以将他们输出到文件中,然后通过文件编辑工具搜索您需要的文件:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 --list > backuplist.txt

 

高级恢复需求:

仅仅恢复有某些特定扩展名的文件:

  1. 1. 首先将所有.bat文件列出来导出到一个文件:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 --list | find /i “.bat” > batlist.txt

  1. 2. 编辑文件,把不需要恢复的文件移除
  2. 3. 然后运行以下命令恢复指定的文件:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 --extract --exclude=* --include-from=batlist.txt

 

使用 powershell仅仅恢复比某个特定日期新的文件:

考虑下面的场景:

  • 文件服务器crash了,但上面有上百万个文件.
  • 恢复所有文件需要花费很多时间。
  • 为了恢复快一些,在第一阶段客户只想恢复比某个特定时间早的文件
  • 然后后面有时间的话在恢复那些没有被恢复的文件

命令首先将符合条件的文件筛选出来并导入到某个文件:

& 'C:\Program Files\avs\bin\avtar.exe' '--id=MCUser' '--password=MCUser1‘'--path=/clients/server1' '--labelnumber=1' '--list' '--verbose=2' |  %{ $_.Split("%")[1]; } | %{ $_.Trimstart(); } | where {$_ -ge "2013-08-01"} | %{ $_.Split(':')[3]; } | %{ $_.Trimstart("\"); } | Set-Content newfiles.txt

然后进行恢复:

& 'C:\Program Files\avs\bin\avtar.exe' '--id=MCUser' '--password=MCUser1' '--path=/clients/server1' '--labelnumber=1' '--extract' '--exclude=*' '--include-from=newfiles.txt'

 

以上两个命令之后,会将2013-08-01 (yyyy-mm-dd)和比他们新的文件恢复到原来路径。

之后我们可以进行一个恢复,使用默认的覆盖选项“Never”,这样一来只有那些之前没被恢复的文件将会被恢复。

 

恢复系统信息:

avtar --id=MCUser --ap=MCUser1 --path=/clients/server1 --labelnumber=1 --extract --internal .system_info --target=c:\avtar_system_info

3.png

这个可以将Windows一些有用的系统信息恢复出来,比如:machine.xml, partitiontables.xml, sessionlog, and statsfile。那么什么时候我们需要恢复系统信息呢?首先可以看到恢复出来的文件有当时备份的session log,当时客户端的volume和基本配置信息等。由于默认我们备份日志在客户端只保留14天,有时候遇到恢复问题,我们需要验证当时备份状态,但没有日志可以查询,就可以将session  log恢复出来验证一下,或者我们做BMR恢复,忘了当时计算机有几块盘,每块盘的大小等,就可以参考volumes.xml等文件来配置。

 

由于通过avtar进行备份或者恢复,可以跳过和MCS通信的环节,直接和gsan进行通信

这些记录不会显示在Avamar activity控制台或者avagent.log里面。

 

希望上面这些信息能让大家更加了解我们备份恢复的一些简单过程。如果您对这些操作有任何的疑问,欢迎随时和我们讨论。谢谢!