Menu
CoddyTech

Menambahkan Timestamp

Termasuk bagian Dasar-Dasar dalam perjalanan Terminal di Coddy. Pelajaran 78 dari 82.

challenge icon

Tantangan

Mudah

Mari buat nama folder cadangan menjadi unik dengan menambahkan stempel waktu. Dengan begitu, setiap pencadangan membuat folder baru alih-alih menimpa folder sebelumnya.

Ubah backup.sh agar:

  1. Tetap menggunakan semua kode yang sudah ada dari pelajaran sebelumnya
  2. Ganti backup_dir="backup" yang statis dengan nama dinamis yang menyertakan stempel waktu
  3. Gunakan substitusi perintah dengan perintah date untuk membuat stempel waktu dengan format YYYYMMDD_HHMMSS
  4. Nama folder cadangan harus berupa: backup_[timestamp]

Perintah date dengan penentu format akan membuat stempel waktu:

date +%Y%m%d_%H%M%S

Gunakan substitusi perintah $(command) untuk menyimpan output ini dalam variabel:

timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"

Menulis skrip beberapa baris dengan satu echo per baris bisa dilakukan, tetapi ada cara yang lebih singkat: *here document* mengalirkan semua isi hingga kata penutup langsung ke dalam file.

cat > script.sh << 'EOF'
#!/bin/bash
echo "hello"
EOF

Tanda kutip di sekitar 'EOF' mencegah $variables dievaluasi saat file ditulis. Ini yang kamu inginkan ketika skrip itu sendiri menggunakannya.

Jalankan skrip dengan documents sebagai input (echo "documents" | bash backup.sh). Outputmu seharusnya terlihat seperti ini:

Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfully

Stempel waktu di outputmu akan berbeda, bergantung pada tanggal dan waktu saat ini.

Petunjuk: Tambahkan timestamp=$(date +%Y%m%d_%H%M%S) sebelum mendefinisikan backup_dir, lalu gunakan backup_dir="backup_$timestamp" untuk membuat nama folder dinamis.

Coba sendiri

Terminal
cat > backup.sh << 'EOF'
#!/bin/bash
read -p "Enter source directory: " source_dir
echo "Backing up: $source_dir"
backup_dir="backup"
mkdir -p "$backup_dir"
echo "Created backup folder: $backup_dir"
cp "$source_dir"/* "$backup_dir"
echo "Files copied successfully"
EOF
echo "documents" | bash backup.sh
ls backup

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Playground Terminal