BookmarkSubscribeRSS Feed

Selective backup and restore of SAS Viya Content

Started ‎06-03-2025 by
Modified ‎06-03-2025 by
Views 1,419

A SAS Viya Administration question that I have heard multiple times recently is whether it is possible to perform a partial backup and restore of a SAS Viya environment. In addition to hearing it from colleagues and customers, I also ran into a case where we needed to implement a partial backup in our internal reporting environment. Given the interest, I thought Communities post. 🙂

 

The SAS Viya Backup and Restore application employs a comprehensive approach to system backup and restoration. It generates a full backup of your Viya system, enabling you to restore the entire backup in the event of an issue or for disaster recovery and migration purposes. This feature provides assurance that your system is fully safeguarded and can be restored from the backup.

 

However, it is important to note that the restore process is designed to restore the complete Viya backup package, rather than individual components. Consequently, the restoration process may take time and may necessitate temporary system downtime.

 

What if you want to protect key Viya content and be able to restore that content selectively? Using SAS Viya's transfer service, you can back up only specific assets rather than the entire system, and in return, you can selectively back up individual or groups of content items without any impact on the running environment.

 

 

Why use this method?

 

  • Granular control: backup and restore only what you need.
  • Efficient: backup only content that has changed in a certain time frame.
  • No downtime: Doesn’t require stopping services or system access.

 

A limitation of this approach is that the user must keep track of dependencies and ensure that dependent objects, such as data used in reports, are also exported.

 

 

How do we do it: sas-viya transfer?

 

You can export the content to a SAS Viya package to backup specific items like reports, models, flows, jobs etc. The export can be performed interactively, but it is most useful to script the process for backup purposes. When the process is scripted it can be run on a schedule. The transfer plugin of the sas-viya CLI can be used to export content from the command line. You can export a folder and its content or individual content items.

 

Automating the export process takes a few steps, is dependent on a third-party tool, JQ, and requires identifying the Uniform Resource Identifier(URI) of the content to export. A URI uniquely identifies each folder and content item in SAS Viya. The example below shows the export of a single SAS Viya folder.

 

  1. Identify the URI (a unique identifier) of the folder
  2. Export the folder by passing the URI to the sas-viya transfer export
  3. Identify the package ID of the package created.
  4. Download from the Infrastructure Data Server the package created as a JSON file.

 

folderid=$(sas-viya --output json folders show --path /gelcontent/GELCorp/Sales  | jq | jq -r  '.["id"]')
sas-viya --output text transfer export -u /folders/folders/$folderid --name SalesContent$folderid
packageid=$(sas-viya --output json transfer list --name SalesContent$folderid | jq | jq -r '.items[]["id"]')
sas-viya transfer download -f /tmp/viya4packages/SalesContent.json --id $packageid

 

With this approach, we can script the backup of SAS Viya content to JSON package files and selectively restore content.

 

 

How do we do it: pyviyatools?

 

The pyviyatools are command-line tools that call the SAS Viya REST API from Python. They are available on the SAS GitHub site and include several tools for backing up and restoring SAS Viya content. Let’s look at some tools for partially backing SAS Viya content. Any of these tools can be scheduled to perform a partial backup regularly.

 

To export the same folder shown in the example above, we can use exportfolder.py. This tool accepts the full folder path as a parameter, removing some of the complexity of exporting a folder with the sas-viya CLI.

 

exportfolder.py -f "/gelcontent/GELCorp/Sales/Reports" -d /tmp/viya4packages --filename SalesContent.json -q

 

The package with the ID 2080ab30-12a0-41cc-91f8-b748f5c5c4a9 was created.

/usr/local/bin/sas-viya transfer download --file /tmp/viya4packages/SalesContent.json.json --id 2080ab30-12a0-41cc-91f8-b748f5c5c4a9
NOTE: Viya folder /gelcontent/GELCorp/Sales/Reports exported to json file /tmp/viya4packages/SalesContent.json.json

 

If you want a backup of all your content, exportfoldertree.py will export the complete Viya folder tree. Each subfolder at the root of the folder tree is exported to its own SAS Viya package.

 

exportfoldertree.py -d /tmp/allfolders -q

 

01_sasgnn_partial_backup_002.png

Select any image to see a larger version.
Mobile users: To view the images, select the "Full" version at the bottom of the page.

 

These two tools allow us to back up folders in the SAS Viya folder tree. Since each folder is exported to its own package file, individual folders can be restored. What if we want to get down to the individaul content level and only backup content that has changed. The Snapshotcontent.py tool allows you to pass a Viya folder. It will recurse through the folder and subfolders and export each content item to a JSON package. The user can filter by date so that only content changed in a specific time period is exported. The following command will export all content under the /gelcontent folder. Each content item will be exported to its own JSON package.

 

python snapshotcontent.py -d /tmp/snapshot_all -f /gelcontent -q

 

The JSON packages are named for the full folder path and item name, enabling easy identification of individual items to restore.

 

02_sasgnn_partial_backup_003.png

 

Adding the -c parameter allows the user to select only content that has changed in the chosen number of days. This makes it easy to only backup specific content items that have changed. The command below will export any content under the /gelcontent folder that has changed in the last day.

 

python snapshotcontent.py -d /tmp/snapshot_all -f /gelcontent -q -c 1

 

03_sasgnn_partial_backup_004.png

Snapshot content can be scheduled to run on a daily basis creating a partial and incremental backup of SAS Viya Content.

 

NOTE: An earlier tool snapshotreports.py does the same for SAS Visual Analytics reports.

 

 

Restoring/Importing

 

On the restore side we have choices to import/restore any of the content from the JSON packages.

 

Using SAS Environment Manager to import the content, you can select what content is restored from each package.

 

04_sasgnn_partial_backup_001.png

 

There are two steps to import with the SAS-Viya CLI. Firstly, upload the JSON package to SAS Viya, capturing the package ID, then pass the package ID to the import command to import the package.

 

packageid=$(sas-viya --output json transfer upload --file /tmp/viya4packages/SalesContent.json | jq | jq -r '.["id"]')
sas-viya --output text transfer import --id $packageid

 

The pyviyatools also has a tool that can help with importing. Importpackages.py will loop through all the packages in a directory and import them to SAS Viya.

 

importpackages.py -d  /tmp/snapshot_today/ -q

 

There are few related pyviyatools that can also help with export and import of Viya artifacts. The names explain what they do.

 

  • exportcaslibs.py
  • exportgeoproviders.py
  • exportcustomgroups.py
  • exportstudioflowcode.py
  • importcaslibs.py
  • importconfguration.py

 

 

Wrap Up

 

In summary, the SAS Viya Backup and Restore application provides a full-system backup approach,  however selective backup and restore of SAS Viya content can be achieved using alternative methods. The SAS Viya transfer service and pyviyatools offer granular control, efficiency, and minimal downtime, allowing users to selectively backup and restore individual content items or folders. By leveraging automation and scripting tools like sas-viya CLI and pyviyatools, organizations can implement an efficient, tailored partial backup strategy for SAS Viya environments. This strategy should be implemented to compliment but not replace SAS Viya Backup and Restore.

 

 

Additional Resources

 

 

 

Find more articles from SAS Global Enablement and Learning here.

Comments

Thank you for posting it. It is much appreciated.  It might be useful to clean transfer packages with python deletetransferpackages.py , so that you only have one recent package when performing this command to identify the package id:

sas-viya --output json transfer list --name SalesContent$folderid

regards Karolina T

@touwen_k thank you for the suggestion!

These are great tools, however I have clarification question about the usage. If I want to make backup of reports I should use snapshotreports.  I So when to use snapshotcontent? Is it to backup SAS Code, images but no reports ? The tool snapshotcontent is also making a json package for reports ( only I could not restore from that)? Pls advise as we eager to use these tools.

@touwen_k  snapshot content.py will do all content in the folders. snapshotreports.py only does reports, it was the original tool developed very early in Viya when there was not much else but reports.  I kept it around for backward compatibility as I know it is being used. You should be able to restore all the packages created. If you have a problem with any of the tools feel free to add an issue on the git project and we will try to determine what the problem is.

Thank you Gerry. The new pyviya tool snapshot content.py works beautifully and our team is keen on the naming convention showing the full path. 

Contributors
Version history
Last update:
‎06-03-2025 08:45 AM
Updated by:

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

SAS AI and Machine Learning Courses

The rapid growth of AI technologies is driving an AI skills gap and demand for AI talent. Ready to grow your AI literacy? SAS offers free ways to get started for beginners, business leaders, and analytics professionals of all skill levels. Your future self will thank you.

Get started

Article Labels