# Canister backup and restore \[Community Consideration\]

**URL:** <https://forum.dfinity.org/t/canister-backup-and-restore-community-consideration/22597>\
**Category:** Developers\
**Tags:** Discussing, community-consideration\
**Created:** [September 6, 2023, 1:51pm UTC](https://forum.dfinity.org/t/canister-backup-and-restore-community-consideration/22597 "2023-09-06T13:51:13Z")\
**Posts on this page:** 1\
**Showing post:** 23

<div class="post-metadata">

**Author:** ![levi](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/levi/32/22608_2.png) [@levi](https://forum.dfinity.org/u/levi)\
**Post date:** [September 27, 2023, 8:26pm UTC](https://forum.dfinity.org/t/canister-backup-and-restore-community-consideration/22597/23 "2023-09-27T20:26:34Z")

</div>

Hi, canister backups and snapshots are a valuable feature for writing canisters.

The [canister\_tools](https://docs.rs/canister-tools/0.1.4/canister_tools/index.html) rust library can create snapshots of the global-variables in the heap for backup and restore purposes. Controllers can create snapshots, download in chunks, and even upload a snapshot in chunks and then load the uploaded snapshot back onto the global variable. At the same time making a simple upgrade strategy for global-heap-variables. The user can choose the serialization format for the snapshots, default is [bincode](https://docs.rs/bincode/1.3.3/bincode/index.html). The library works with the virtual memories feature of the ic-stable-structures library so stable-structures can be used alongside global-variables in the heap. The library also creates public controller methods for reading and writing the virtual stable-memories.

> [@Rust library \`canister\_tools\` for simple upgrades, data-snapshots download and upload, and some handy tools](https://forum.dfinity.org/t/rust-library-canister-tools-for-simple-global-data-upgrades-data-snapshots-download-and-upload-and-some-handy-tools/23356):
>
> Hi everyone, This post is about a new rust library for canisters: [canister-tools](https://crates.io/crates/canister-tools). The main features of this library make it easy to handle upgrades of global-data-variables in the main-heap-memory and at the same time simple to create serialized snapshots of the global-data, download the snapshots in chunks, and can upload a serialized snapshot in chunks and then load it onto the global variable(s) giving maximum controll over the global-heap-data. The library works with the memory-manager’s [v…](https://docs.rs/ic-stable-structures/latest/ic_stable_structures/memory_manager/struct.VirtualMemory.html)

---

_[View the full topic](https://forum.dfinity.org/t/canister-backup-and-restore-community-consideration/22597)._
