Archives and Compression
Extract Target
Add a Destination
Extraction commands often need both an archive name and a destination directory. Keeping those values separate makes scripts easier to review.
Program
Play the script to choose the destination directory used in the extract command.
extract_target.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash
target_dir="site"
archive="site.tar.gz"
mode="extract"
command="tar -xzf $archive -C $target_dir"
echo "$mode:$command"
#!/usr/bin/env bash
target_dir="restore"
archive="site.tar.gz"
mode="extract"
command="tar -xzf $archive -C $target_dir"
echo "$mode:$command"
#!/usr/bin/env bash
target_dir="tmp"
archive="site.tar.gz"
mode="extract"
command="tar -xzf $archive -C $target_dir"
echo "$mode:$command"
target_dir ← site
3target_dir="site"4archive="site.tar.gz"values this stepsitetarget_dirarchive ← site.tar.gz
3target_dir="site"4archive="site.tar.gz"5mode="extract"values this stepsite.tar.gzarchivemode ← extract
4archive="site.tar.gz"5mode="extract"6command="tar -xzf $archive -C $target_dir"values this stepextractmodecommand ← tar -xzf site.tar.gz -C site
5mode="extract"6command="tar -xzf $archive -C $target_dir"7echo "$mode:$command"values this steptar -xzf site.tar.gz -C sitecommandsite.tar.gzarchivesitetarget_direcho "$mode:$command"
6command="tar -xzf $archive -C $target_dir"7echo "$mode:$command"outputextract:tar -xzf site.tar.gz -C sitevalues this stepextractmodetar -xzf site.tar.gz -C sitecommand
target_dir ← restore
3target_dir="restore"4archive="site.tar.gz"values this steprestoretarget_dirarchive ← site.tar.gz
3target_dir="restore"4archive="site.tar.gz"5mode="extract"values this stepsite.tar.gzarchivemode ← extract
4archive="site.tar.gz"5mode="extract"6command="tar -xzf $archive -C $target_dir"values this stepextractmodecommand ← tar -xzf site.tar.gz -C restore
5mode="extract"6command="tar -xzf $archive -C $target_dir"7echo "$mode:$command"values this steptar -xzf site.tar.gz -C restorecommandsite.tar.gzarchiverestoretarget_direcho "$mode:$command"
6command="tar -xzf $archive -C $target_dir"7echo "$mode:$command"outputextract:tar -xzf site.tar.gz -C restorevalues this stepextractmodetar -xzf site.tar.gz -C restorecommand
target_dir ← tmp
3target_dir="tmp"4archive="site.tar.gz"values this steptmptarget_dirarchive ← site.tar.gz
3target_dir="tmp"4archive="site.tar.gz"5mode="extract"values this stepsite.tar.gzarchivemode ← extract
4archive="site.tar.gz"5mode="extract"6command="tar -xzf $archive -C $target_dir"values this stepextractmodecommand ← tar -xzf site.tar.gz -C tmp
5mode="extract"6command="tar -xzf $archive -C $target_dir"7echo "$mode:$command"values this steptar -xzf site.tar.gz -C tmpcommandsite.tar.gzarchivetmptarget_direcho "$mode:$command"
6command="tar -xzf $archive -C $target_dir"7echo "$mode:$command"outputextract:tar -xzf site.tar.gz -C tmpvalues this stepextractmodetar -xzf site.tar.gz -C tmpcommand
extract
`tar -xzf` is the common gzip-compressed tar extraction shape.
destination
`-C target` tells tar where to extract files.
separate values
Storing archive and target separately makes the final command easier to inspect.