DEV Community

Janak Shrestha
Janak Shrestha

Posted on

Linux Backup Basics: Creating Uncompressed and Compressed Tar Archives of System Logs

The development team requires specific logs stored within the Nautilus storage server situated in the Stratos DC. Access the designated location on the server to retrieve the necessary logs. Further, perform below actions:

Create a tar archive named logs.tar (under natasha's home) of /var/log/ directory.

Now, create a compressed tar archive as well named logs.tar.gz (under natasha's home) of /var/log/ directory.


Solution

Step 1: Connect to Storage Server

ssh natasha@ststor01
# Password: Bl@kW
Enter fullscreen mode Exit fullscreen mode

Step 2: Verify current state

# Check what files exist
ls -la ~/logs* 2>/dev/null

# Check if /var/log directory exists
ls -ld /var/log
Enter fullscreen mode Exit fullscreen mode

Step 3: Create the tar archives

# Create uncompressed tar archive (removing leading '/' from member names)
tar -cf /home/natasha/logs.tar -C / var/log

# Create compressed tar archive (gzip)
tar -czf /home/natasha/logs.tar.gz -C / var/log
Enter fullscreen mode Exit fullscreen mode

Step 4: Verify files created

# Check files exist
ls -la /home/natasha/logs.tar /home/natasha/logs.tar.gz

# Check file sizes
du -h /home/natasha/logs.tar /home/natasha/logs.tar.gz

# Verify archive contents
tar -tf /home/natasha/logs.tar | head -10
tar -tzf /home/natasha/logs.tar.gz | head -10
Enter fullscreen mode Exit fullscreen mode

Corrected Commands

One-Line Command

ssh natasha@ststor01 "sudo -S bash -c 'tar -cf /home/natasha/logs.tar -C / var/log && tar -czf /home/natasha/logs.tar.gz -C / var/log && ls -la /home/natasha/logs.tar*'"
# Password: Bl@kW
Enter fullscreen mode Exit fullscreen mode

Step-by-Step Interactive

# Connect to storage server
ssh natasha@ststor01
# Password: Bl@kW

# Switch to root (if needed for permissions)
sudo su -
# Password: Bl@kW

# Remove any failed attempts
rm -f /home/natasha/logs.tar /home/natasha/logs.tar.gz

# Create uncompressed tar (using -C to avoid leading / warning)
echo "=== Creating logs.tar ==="
tar -cf /home/natasha/logs.tar -C / var/log

# Create compressed tar
echo "=== Creating logs.tar.gz ==="
tar -czf /home/natasha/logs.tar.gz -C / var/log

# Verify files
echo "=== Verification ==="
ls -la /home/natasha/logs.tar /home/natasha/logs.tar.gz

# Check contents
echo "=== logs.tar contents (first 5) ==="
tar -tf /home/natasha/logs.tar | head -5

echo "=== logs.tar.gz contents (first 5) ==="
tar -tzf /home/natasha/logs.tar.gz | head -5

# Check sizes
echo "=== File sizes ==="
du -h /home/natasha/logs.tar /home/natasha/logs.tar.gz

# Exit
exit
exit
Enter fullscreen mode Exit fullscreen mode

Expected Output

[natasha@ststor01 ~]$ ls -la /home/natasha/logs*
ls: cannot access /home/natasha/logs*: No such file or directory

[natasha@ststor01 ~]$ tar -cf /home/natasha/logs.tar -C / var/log
[natasha@ststor01 ~]$ tar -czf /home/natasha/logs.tar.gz -C / var/log

[natasha@ststor01 ~]$ ls -la /home/natasha/logs*
-rw-r--r-- 1 natasha natasha 456789 Aug 27 10:00 /home/natasha/logs.tar
-rw-r--r-- 1 natasha natasha  98765 Aug 27 10:00 /home/natasha/logs.tar.gz

[natasha@ststor01 ~]$ tar -tf /home/natasha/logs.tar | head -5
var/log/
var/log/anaconda/
var/log/anaconda/anaconda.log
var/log/anaconda/syslog
var/log/anaconda/program.log
Enter fullscreen mode Exit fullscreen mode

Common Issues & Fixes

Issue 1: "tar: Removing leading / from member names"

Fix: Use -C / to change directory before archiving:

tar -cf /home/natasha/logs.tar -C / var/log
Enter fullscreen mode Exit fullscreen mode

Issue 2: Permission denied

Fix: Use sudo or become root:

sudo tar -cf /home/natasha/logs.tar -C / var/log
Enter fullscreen mode Exit fullscreen mode

Issue 3: File not in correct location

Fix: Use absolute path:

tar -cf /home/natasha/logs.tar -C / var/log
# NOT: tar -cf logs.tar /var/log/
Enter fullscreen mode Exit fullscreen mode

Verification Commands

# 1. Check files exist
ls -la /home/natasha/logs.tar /home/natasha/logs.tar.gz

# 2. Check file sizes (compressed should be smaller)
du -h /home/natasha/logs.tar /home/natasha/logs.tar.gz

# 3. Verify archive integrity
tar -tf /home/natasha/logs.tar > /dev/null && echo "✓ logs.tar valid"
tar -tzf /home/natasha/logs.tar.gz > /dev/null && echo "✓ logs.tar.gz valid"

# 4. Count files in each archive
echo "Files in logs.tar: $(tar -tf /home/natasha/logs.tar | wc -l)"
echo "Files in logs.tar.gz: $(tar -tzf /home/natasha/logs.tar.gz | wc -l)"

# 5. Check owner and permissions
ls -la /home/natasha/logs.tar*
Enter fullscreen mode Exit fullscreen mode

Complete Script (Run from Jump Host)

#!/bin/bash

echo "========================================="
echo "Creating tar archives on Storage Server"
echo "========================================="

ssh natasha@ststor01 << 'EOF'
echo 'Bl@kW' | sudo -S bash -c '
echo ""
echo "=== Cleaning up old files ==="
rm -f /home/natasha/logs.tar /home/natasha/logs.tar.gz

echo ""
echo "=== Creating logs.tar ==="
tar -cf /home/natasha/logs.tar -C / var/log

echo ""
echo "=== Creating logs.tar.gz ==="
tar -czf /home/natasha/logs.tar.gz -C / var/log

echo ""
echo "=== Verification ==="
ls -la /home/natasha/logs.tar /home/natasha/logs.tar.gz

echo ""
echo "=== File sizes ==="
du -h /home/natasha/logs.tar /home/natasha/logs.tar.gz

echo ""
echo "=== logs.tar contents (first 5) ==="
tar -tf /home/natasha/logs.tar | head -5

echo ""
echo "✅ Both tar archives created successfully!"
'
EOF
Enter fullscreen mode Exit fullscreen mode

Summary

  • logs.tar created in /home/natasha/
  • logs.tar.gz created in /home/natasha/
  • ✅ Both archives contain /var/log/ directory
  • ✅ Archives verified and accessible
  • ✅ Using -C / to avoid leading / warnings

Top comments (0)