{"id":221,"date":"2010-07-26T03:06:27","date_gmt":"2010-07-26T03:06:27","guid":{"rendered":"http:\/\/www.backupassist.com\/blog\/?p=221"},"modified":"2019-11-13T08:42:48","modified_gmt":"2019-11-13T08:42:48","slug":"scripting-in-backupassist","status":"publish","type":"post","link":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist","title":{"rendered":"Scripting in BackupAssist"},"content":{"rendered":"<p>Hi all,<\/p>\n<p>Recently the technical support team has received questions about how BackupAssist handles manually entered scripts. In one such case, a user\u2019s Robocopy script was causing a warning to appear in the backup report, even though the script was completing successfully. To explain why this warning appeared, and to answer other scripting-related questions, we\u2019d like to outline how scripting works in BackupAssist, as well as show you how you can resolve the issue with Robocopy and other similar scripting commands.<\/p>\n<p>Each script entered in the \u2018Scripts\u2019 tab of a BackupAssist job runs as a separate batch file. The \u201cRun before each backup\u201d script runs as one batch file, the \u201cRun after each successful backup\u201d runs as another batch file, and so on.<\/p>\n<p>BackupAssist determines the success of each script individually, in the same way that Windows (DOS) does: the exit code of each batch file executed is the exit code of the last command in the script that modifies the exit code. While some commands, like echo, do not modify the exit code, the majority use \u2018zero\u2019 for success and a non-zero value for failure.<\/p>\n<p>If BackupAssist detects a non-zero exit code from a script, the reporting option selected for the script will determine whether a warning or error appears in&nbsp;the backup report. In the job below, the script is set to add a minor warning to the report if the script fails:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.backupassist.com\/images\/screenshots\/scripts_blog_interface.png\" alt=\"\"><\/p>\n<p>If the above script returns an exit code of&nbsp;-1 (or anything except \u2018zero\u2019) when executed, a minor warning will appear in the report, similar to the following:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.backupassist.com\/images\/screenshots\/scripts_blog_report2.png\" alt=\"\" width=\"550\" height=\"237\"><\/p>\n<p>This is the default behavior for any script entered, but can be modified by changing the reporting option from \u201cMinor warning\u201d to one of the other available settings:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.backupassist.com\/images\/screenshots\/scripts_blog_report.png\" alt=\"\"><\/p>\n<p>Now that we&#8217;ve explained how scripting works in BackupAssist and how the success or failure of a script is determined, we can discuss the Robocopy case mentioned. In this scenario, a user noted that a warning appeared in their backup report for a Robocopy script even though&nbsp;the script completed successfully.<\/p>\n<p>The reason for this is that Robocopy does not use a \u2018zero\u2019 value to indicate success. Robocopy instead uses \u2018zero\u2019 to indicate two things: 1) that there were no errors AND 2) that nothing was copied. Non-zero return values from Robocopy can have many different meanings, including that&nbsp;the script&nbsp;completed successfully. For example, an exit code of \u20181\u2019 indicates that files were copied successfully. You can visit <a href=\"http:\/\/support.microsoft.com\/kb\/954404\">http:\/\/support.microsoft.com\/kb\/954404<\/a> (Microsoft website) or <a href=\"http:\/\/ss64.com\/nt\/robocopy-exit.html\">http:\/\/ss64.com\/nt\/robocopy-exit.html<\/a> (3rd party website) to learn more about Robocopy return values.<\/p>\n<p>To handle Robocopy commands in BackupAssist you need to first decide whether the Robocopy operation is a critical part of the backup. If it is, you should change the reporting option to report an \u201cError\u201d instead of a \u201cMinor warning\u201d if BackupAssist detects that the script failed (i.e. the exit code was a non-zero value). You can then modify your script to have BackupAssist report the Robocopy exit code so that you can identify real errors by checking for an exit code of 8 or higher.<\/p>\n<p>You can then make sure that when the script runs successfully (i.e. the exit code returned is less than 8 ) BackupAssist receives an exit code of zero. This will mean that no script warning or error will appear in the report unless the error code returned is 8 or higher. An example script to achieve this is as follows:<\/p>\n<p style=\"padding-left: 60px;font-family: 'Courier New', Courier, monospace\"><span style=\"color: #99cc00\"><strong><span style=\"color: #339966\">robocopy &lt;arguments&gt;<\/span><\/strong><\/span><\/p>\n<p style=\"padding-left: 60px;font-family: 'Courier New', Courier, monospace\"><span style=\"color: #99cc00\"><strong><span style=\"color: #339966\">echo robocopy %errorlevel%<\/span><\/strong><\/span><\/p>\n<p style=\"padding-left: 60px;font-family: 'Courier New', Courier, monospace\"><span style=\"color: #99cc00\"><strong><span style=\"color: #339966\">if errorlevel 8 exit<\/span><\/strong><\/span><\/p>\n<p style=\"padding-left: 60px;font-family: 'Courier New', Courier, monospace\"><strong><span style=\"color: #339966\">exit 0<\/span><\/strong><\/p>\n<p>We hope this information helps clarify how scripting works in BackupAssist, as well as how you can modify your job to handle different scripting programs. If you have any questions please email us at <a href=\"mailto:support@backupassist.com\">support@backupassist.com<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi all, Recently the technical support team has received questions about how BackupAssist handles manually entered scripts. In one such case, a user\u2019s Robocopy script was causing a warning to appear in the backup report, even though the script was completing successfully. To explain why this warning appeared, and to answer other scripting-related questions, we\u2019d &#8230; <a title=\"Scripting in BackupAssist\" class=\"read-more\" href=\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist\">Read more <span class=\"screen-reader-text\">Scripting in BackupAssist<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":13831,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,760],"tags":[],"class_list":["post-221","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-support","category-legacy"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Scripting in BackupAssist - Cyber Resilience Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scripting in BackupAssist - Cyber Resilience Blog\" \/>\n<meta property=\"og:description\" content=\"Hi all, Recently the technical support team has received questions about how BackupAssist handles manually entered scripts. In one such case, a user\u2019s Robocopy script was causing a warning to appear in the backup report, even though the script was completing successfully. To explain why this warning appeared, and to answer other scripting-related questions, we\u2019d ... Read more Scripting in BackupAssist\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist\" \/>\n<meta property=\"og:site_name\" content=\"Cyber Resilience Blog\" \/>\n<meta property=\"article:published_time\" content=\"2010-07-26T03:06:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-13T08:42:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png\" \/>\n\t<meta property=\"og:image:width\" content=\"842\" \/>\n\t<meta property=\"og:image:height\" content=\"596\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"BackupAssist\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"BackupAssist\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist\"},\"author\":{\"name\":\"BackupAssist\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/#\/schema\/person\/7cc9022a5ee336d8ac2696b370023bd0\"},\"headline\":\"Scripting in BackupAssist\",\"datePublished\":\"2010-07-26T03:06:27+00:00\",\"dateModified\":\"2019-11-13T08:42:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist\"},\"wordCount\":633,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png\",\"articleSection\":[\"Support\",\"Z-Legacy\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist\",\"url\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist\",\"name\":\"Scripting in BackupAssist - Cyber Resilience Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png\",\"datePublished\":\"2010-07-26T03:06:27+00:00\",\"dateModified\":\"2019-11-13T08:42:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#primaryimage\",\"url\":\"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png\",\"contentUrl\":\"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png\",\"width\":842,\"height\":596},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.backupassist.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scripting in BackupAssist\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/#website\",\"url\":\"https:\/\/www.backupassist.com\/blog\/\",\"name\":\"Cyber Resilience Blog\",\"description\":\"Protect Your Cloud Data with BackupAssist\",\"publisher\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.backupassist.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/#organization\",\"name\":\"Cyber Resilience Blog\",\"url\":\"https:\/\/www.backupassist.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2019\/09\/BA-Logo-Full-Logo.svg\",\"contentUrl\":\"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2019\/09\/BA-Logo-Full-Logo.svg\",\"caption\":\"Cyber Resilience Blog\"},\"image\":{\"@id\":\"https:\/\/www.backupassist.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/#\/schema\/person\/7cc9022a5ee336d8ac2696b370023bd0\",\"name\":\"BackupAssist\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.backupassist.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4cd39e69c8b77669a62fa4c0174a86d134a0f35d5f9891c020ddb7fecd0696d4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4cd39e69c8b77669a62fa4c0174a86d134a0f35d5f9891c020ddb7fecd0696d4?s=96&d=mm&r=g\",\"caption\":\"BackupAssist\"},\"url\":\"https:\/\/www.backupassist.com\/blog\/author\/backupassist\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Scripting in BackupAssist - Cyber Resilience Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist","og_locale":"en_US","og_type":"article","og_title":"Scripting in BackupAssist - Cyber Resilience Blog","og_description":"Hi all, Recently the technical support team has received questions about how BackupAssist handles manually entered scripts. In one such case, a user\u2019s Robocopy script was causing a warning to appear in the backup report, even though the script was completing successfully. To explain why this warning appeared, and to answer other scripting-related questions, we\u2019d ... Read more Scripting in BackupAssist","og_url":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist","og_site_name":"Cyber Resilience Blog","article_published_time":"2010-07-26T03:06:27+00:00","article_modified_time":"2019-11-13T08:42:48+00:00","og_image":[{"width":842,"height":596,"url":"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png","type":"image\/png"}],"author":"BackupAssist","twitter_card":"summary_large_image","twitter_misc":{"Written by":"BackupAssist","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#article","isPartOf":{"@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist"},"author":{"name":"BackupAssist","@id":"https:\/\/www.backupassist.com\/blog\/#\/schema\/person\/7cc9022a5ee336d8ac2696b370023bd0"},"headline":"Scripting in BackupAssist","datePublished":"2010-07-26T03:06:27+00:00","dateModified":"2019-11-13T08:42:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist"},"wordCount":633,"commentCount":0,"publisher":{"@id":"https:\/\/www.backupassist.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#primaryimage"},"thumbnailUrl":"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png","articleSection":["Support","Z-Legacy"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist","url":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist","name":"Scripting in BackupAssist - Cyber Resilience Blog","isPartOf":{"@id":"https:\/\/www.backupassist.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#primaryimage"},"image":{"@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#primaryimage"},"thumbnailUrl":"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png","datePublished":"2010-07-26T03:06:27+00:00","dateModified":"2019-11-13T08:42:48+00:00","breadcrumb":{"@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#primaryimage","url":"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png","contentUrl":"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2008\/05\/tile-placeholder1-01.png","width":842,"height":596},{"@type":"BreadcrumbList","@id":"https:\/\/www.backupassist.com\/blog\/scripting-in-backupassist#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.backupassist.com\/blog"},{"@type":"ListItem","position":2,"name":"Scripting in BackupAssist"}]},{"@type":"WebSite","@id":"https:\/\/www.backupassist.com\/blog\/#website","url":"https:\/\/www.backupassist.com\/blog\/","name":"Cyber Resilience Blog","description":"Protect Your Cloud Data with BackupAssist","publisher":{"@id":"https:\/\/www.backupassist.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.backupassist.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.backupassist.com\/blog\/#organization","name":"Cyber Resilience Blog","url":"https:\/\/www.backupassist.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.backupassist.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2019\/09\/BA-Logo-Full-Logo.svg","contentUrl":"https:\/\/www.backupassist.com\/app\/uploads\/sites\/3\/2019\/09\/BA-Logo-Full-Logo.svg","caption":"Cyber Resilience Blog"},"image":{"@id":"https:\/\/www.backupassist.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.backupassist.com\/blog\/#\/schema\/person\/7cc9022a5ee336d8ac2696b370023bd0","name":"BackupAssist","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.backupassist.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4cd39e69c8b77669a62fa4c0174a86d134a0f35d5f9891c020ddb7fecd0696d4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4cd39e69c8b77669a62fa4c0174a86d134a0f35d5f9891c020ddb7fecd0696d4?s=96&d=mm&r=g","caption":"BackupAssist"},"url":"https:\/\/www.backupassist.com\/blog\/author\/backupassist"}]}},"_links":{"self":[{"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/posts\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/comments?post=221"}],"version-history":[{"count":2,"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/posts\/221\/revisions"}],"predecessor-version":[{"id":14009,"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/posts\/221\/revisions\/14009"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/media\/13831"}],"wp:attachment":[{"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/media?parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/categories?post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.backupassist.com\/blog\/wp-json\/wp\/v2\/tags?post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}