Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Backup automation script in Bash Scripting - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a backup directory if it does not exist.

Bash Scripting
if [ ! -d [1] ]; then
  mkdir -p /backup
fi
Drag options to blanks, or click blank then click option'
A/tmp
B/home
C/backup
D/var
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong directory path.
Forgetting the exclamation mark to negate the condition.
2fill in blank
medium

Complete the code to copy all files from /data to the backup directory.

Bash Scripting
cp -r /data/* [1]
Drag options to blanks, or click blank then click option'
A/backup
B/tmp
C/var
D/home
Attempts:
3 left
💡 Hint
Common Mistakes
Copying to the wrong directory.
Forgetting the -r flag for directories.
3fill in blank
hard

Fix the error in the code to archive the backup directory into a tar.gz file.

Bash Scripting
tar -czf [1] /backup
Drag options to blanks, or click blank then click option'
Abackup.tar
Bbackup.gz
Cbackup.zip
Dbackup.tar.gz
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong file extension like .zip or .gz alone.
Omitting the -z flag for compression.
4fill in blank
hard

Fill both blanks to check if the backup archive exists and print a success message.

Bash Scripting
if [ -f [1] ]; then
  echo [2]
fi
Drag options to blanks, or click blank then click option'
Abackup.tar.gz
B"Backup completed successfully!"
C"Backup failed!"
Dbackup.zip
Attempts:
3 left
💡 Hint
Common Mistakes
Checking for wrong file name.
Printing failure message on success check.
5fill in blank
hard

Fill all three blanks to create a timestamped backup filename and archive the backup directory.

Bash Scripting
timestamp=$(date +[1])
backup_file=[2]_$timestamp.tar.gz
tar -czf [3] /backup
Drag options to blanks, or click blank then click option'
A"%Y%m%d_%H%M%S"
Bbackup
C$backup_file
Dbackup.tar.gz
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong date format string.
Not using the variable for the archive filename.
Hardcoding the archive filename instead of using timestamp.

Practice

(1/5)
1. What is the main purpose of a backup automation script in bash?
easy
A. To delete old files from the system
B. To automatically copy important files to a safe location regularly
C. To speed up the computer by closing programs
D. To change file permissions for security

Solution

  1. Step 1: Understand the goal of backup automation

    A backup automation script is designed to save copies of important files automatically to prevent data loss.
  2. Step 2: Identify the correct purpose among options

    Only To automatically copy important files to a safe location regularly describes copying files regularly to a safe place, which matches backup automation.
  3. Final Answer:

    To automatically copy important files to a safe location regularly -> Option B
  4. Quick Check:

    Backup automation = automatic file copying [OK]
Hint: Backup scripts copy files automatically to protect data [OK]
Common Mistakes:
  • Confusing backup with deleting files
  • Thinking backup speeds up the system
  • Mixing backup with changing permissions
2. Which of the following bash commands correctly creates a backup directory with today's date?
easy
A. mkdir backup-$(date +%Y-%m-%d)
B. mkdir backup_date
C. mkdir backup $(date +%d-%m-%Y)
D. mkdir backup-`date +%Y/%m/%d`

Solution

  1. Step 1: Understand date command format for folder naming

    The format +%Y-%m-%d gives a date like 2024-06-15, which is safe for folder names.
  2. Step 2: Check each mkdir command for correctness

    mkdir backup-`date +%Y/%m/%d` uses backticks (valid) but produces slashes (/), invalid for folder names. mkdir backup_date uses a literal string without date. mkdir backup $(date +%d-%m-%Y) has a space causing two arguments to mkdir ('backup' and date string). mkdir backup-$(date +%Y-%m-%d) uses correct $( ) substitution and safe hyphen-separated format.
  3. Final Answer:

    mkdir backup-$(date +%Y-%m-%d) -> Option A
  4. Quick Check:

    Safe date format with mkdir = mkdir backup-$(date +%Y-%m-%d) [OK]
Hint: Use $(date +%Y-%m-%d) for safe folder names [OK]
Common Mistakes:
  • Using slashes in folder names
  • Not using command substitution syntax
  • Using underscores instead of date command
3. What will be the output of this script snippet?
backup_dir="backup-$(date +%Y-%m-%d)"
mkdir -p "$backup_dir"
cp -r /home/user/documents "$backup_dir"
Assuming today's date is 2024-06-15 and the documents folder exists.
medium
A. Throws an error because of missing quotes
B. Creates a folder named backup-$(date +%Y-%m-%d) and copies documents inside it
C. Creates a folder named backup-2024-06-15 and copies documents inside it
D. Copies documents to the current directory without creating a folder

Solution

  1. Step 1: Evaluate variable assignment and command substitution

    The variable backup_dir will be set to backup-2024-06-15 because $(date +%Y-%m-%d) runs and inserts the date.
  2. Step 2: Understand mkdir and cp commands with quotes

    mkdir -p creates the directory if it doesn't exist. cp -r copies the documents folder recursively into the backup directory. Quotes ensure spaces are handled safely.
  3. Final Answer:

    Creates a folder named backup-2024-06-15 and copies documents inside it -> Option C
  4. Quick Check:

    Command substitution + mkdir + cp = Creates a folder named backup-2024-06-15 and copies documents inside it [OK]
Hint: Quotes and $(date) create dated backup folders safely [OK]
Common Mistakes:
  • Not using quotes causing errors with spaces
  • Misunderstanding command substitution syntax
  • Assuming cp copies files without -r for folders
4. Identify the error in this backup script snippet:
backup_dir=backup-$(date +%Y-%m-%d)
mkdir $backup_dir
cp -r /home/user/docs $backup_dir
medium
A. Missing quotes around $backup_dir may cause errors if folder name has spaces
B. mkdir command should be mkdir -r instead of mkdir
C. cp command should not use -r for copying directories
D. Date format in variable assignment is incorrect

Solution

  1. Step 1: Check mkdir command usage

    mkdir without -p is okay if folder doesn't exist, but missing quotes around $backup_dir can cause issues if the folder name contains spaces.
  2. Step 2: Check cp command and date format

    cp -r is correct for copying directories. Date format is valid. The main issue is missing quotes around variable usage.
  3. Final Answer:

    Missing quotes around $backup_dir may cause errors if folder name has spaces -> Option A
  4. Quick Check:

    Always quote variables with spaces in paths [OK]
Hint: Always quote variables when used as paths [OK]
Common Mistakes:
  • Using mkdir -r which is invalid
  • Not using -r with cp for directories
  • Incorrect date format syntax
5. You want to automate backups of the /var/log directory daily, keeping backups for 7 days only. Which script snippet correctly creates a dated backup folder and deletes backups older than 7 days?
hard
A. backup_dir="backup-$(date +%Y-%m-%d)" mkdir -p "$backup_dir" cp -r /var/log "$backup_dir" find . -name 'backup-*' -delete
B. backup_dir=backup-$(date +%Y-%m-%d) mkdir $backup_dir cp /var/log $backup_dir rm -rf backup-*
C. backup_dir="backup-$(date +%Y-%m-%d)" mkdir -p "$backup_dir" cp -r /var/log "$backup_dir" rm -rf backup-*
D. backup_dir="backup-$(date +%Y-%m-%d)" mkdir -p "$backup_dir" cp -r /var/log "$backup_dir" find . -maxdepth 1 -name 'backup-*' -mtime +7 -exec rm -rf {} +

Solution

  1. Step 1: Create dated backup folder and copy logs

    Snippets using backup_dir="backup-$(date +%Y-%m-%d)" (double quotes), mkdir -p "$backup_dir", cp -r /var/log "$backup_dir" correctly create dated folder and copy recursively. The other lacks quotes, -p, -r so may fail.
  2. Step 2: Remove backups older than 7 days safely

    rm -rf backup-* and find . -name 'backup-*' -delete delete all backups without age check. Only find . -maxdepth 1 -name 'backup-*' -mtime +7 -exec rm -rf {} + limits to top-level, selects >7 days old, deletes safely.
  3. Final Answer:

    backup_dir="backup-$(date +%Y-%m-%d)" mkdir -p "$backup_dir" cp -r /var/log "$backup_dir" find . -maxdepth 1 -name 'backup-*' -mtime +7 -exec rm -rf {} + -> Option D
  4. Quick Check:

    Safe find with -maxdepth and -mtime +7 = backup_dir="backup-$(date +%Y-%m-%d)" mkdir -p "$backup_dir" cp -r /var/log "$backup_dir" find . -maxdepth 1 -name 'backup-*' -mtime +7 -exec rm -rf {} + [OK]
Hint: Use find with -mtime +7 and -maxdepth 1 to delete old backups [OK]
Common Mistakes:
  • Deleting all backups instead of only old ones
  • Missing -p in mkdir causing errors
  • Using cp without -r for directories
  • Not limiting find depth risking unwanted deletions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard