Menu
Coddy logo textTech

הוספת חותמת זמן

חלק מהיחידה יסודות במסלול ה-Terminal של Coddy. שיעור 78 מתוך 82.

challenge icon

אתגר

קל

ניצור שם ייחודי לתיקיית הגיבוי על ידי הוספת חותמת זמן. כך, כל גיבוי ייצור תיקייה חדשה במקום לדרוס את הגיבוי הקודם.

שנו את backup.sh כך:

  1. השאירו את כל הקוד הקיים מהשיעור הקודם
  2. החליפו את backup_dir="backup" בשם דינמי שכולל חותמת זמן
  3. השתמשו בהחלפת פקודה עם הפקודה date כדי ליצור חותמת זמן בפורמט YYYYMMDD_HHMMSS
  4. שם תיקיית הגיבוי צריך להיות: backup_[timestamp]

הפקודה date עם מצייני פורמט יוצרת חותמות זמן:

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

השתמשו בהחלפת פקודה $(command) כדי ללכוד את הפלט הזה במשתנה:

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

כתיבת סקריפט מרובה שורות באמצעות echo אחד בכל שורה עובדת, אבל יש דרך קצרה יותר: *מסמך כאן* מעביר ישירות לקובץ את כל התוכן עד למילה הסוגרת.

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

המרכאות סביב 'EOF' מונעות את הרחבת $variables בזמן כתיבת הקובץ, וזה מה שרוצים כשהסקריפט עצמו משתמש בהם.

הריצו את הסקריפט כשהקלט הוא documents (echo "documents" | bash backup.sh). הפלט שלכם אמור להיראות כך:

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

חותמת הזמן בפלט שלכם תהיה שונה בהתאם לתאריך ולשעה הנוכחיים.

רמז: הוסיפו timestamp=$(date +%Y%m%d_%H%M%S) לפני הגדרת backup_dir, ואז השתמשו ב-backup_dir="backup_$timestamp" כדי ליצור את שם התיקייה הדינמי.

נסו בעצמכם

טרמינל
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

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Terminal אונליין