This question/reply is a partial duplicate, see:
[url]https://devtalk.nvidia.com/default/topic/1014421/jetson-tx2/using-dev-nvme-drive-or-sdcard-as-root-partition-or-even-sata-drive-/post/5172505/#5172505[/url]
The key to using dd is that the drive should not be mounted. dd itself operates on device special files, and has no knowledge of underlying file system, so it copies device blocks, not files (which in turn means it does a perfect job regardless of what operating system formats are used, and even encrypted file systems are copied without error).
The flash.sh program refers to partitions in a number of ways, one example being an offset and length span. Each partition uses a label as well, the “APP” partition is just a shortcut label for the root partition. The “APP” partition is rootfs on all of the Tegra devices flashed using this application. Any application which can see GPT labels can see “APP”, e.g., under gdisk you can print (“p” command) partition info and “APP” appears next to the first partition.
Backup is best with clone, as you can tell flash.sh to “reuse” (via “-r”) an existing system.img, and simply substitute the clone directly in place. Info on the missing flash.sh “-G” parameter is given in that other URL. Loopback mounting the clone on PC host allows the clone to be updated with ordinary rsync methods from a remote Jetson if the Jetson is running.