kiểm tra nếu bộ nhớ có sẵn và nếu nó được thực hiện một thói quen sao lưu với cụm từ mật khẩu và kiểm tra thêm


0

Tôi đã có thể tự động hóa bản sao lưu của mình với Câu hỏi đầu tiên này. Chỉ cần sao chép nó vào một tệp .sh và chạy nó với các đường dẫn của tôi, chạy smoth ngay bây giờ. Sau đó, tôi đã làm theo điều này: https://stackoverflow.com/questions/132955/how-do-i-set-a-task-to-run-every-so-often#133425 Lingon này hoạt động tốt và nó sao lưu mỗi ngày.

Bây giờ, khi tôi làm việc, tôi nhận thấy rằng tôi đã không nghĩ đến việc hết dung lượng đĩa. Tôi nghĩ rằng một giới hạn khó khăn để nói rằng 10 bản sao lưu sẽ tốt đẹp. Tôi có thể liệt kê các ảnh chụp nhanh bằng lệnh này:

restic -r /Volumes/BackupManual/restic-backups snapshots

và đầu ra trông như thế này:

ID        Date                 Host        Tags            Directory
----------------------------------------------------------------------
dbc3943d  2017-02-07 18:50:47  User.fritz.box                  /Users/user/Documents
bd355ca9  2017-02-07 19:57:59  User.fritz.box                  /Users/user/Documents

Có cách nào để đếm Dòng và xóa ID cũ nhất không? đây là lệnh xóa:

restic -r /Volumes/BackupManual/restic-backups forget IDxxxxxx

tôi không biết làm thế nào để tích hợp một lựa chọn như vậy ở đây:

#!/bin/bash

# USER CONFIGURATION:    
resticuser=restic
srcdir=/Users/user/data
backupvolume=/Volumes/usb-storage-name
backupdir=${backupvolume}/restic-backups

# Script vars:
longname=$0
shortname=$(/usr/bin/basename "${longname}")

printf '%s %s (%s) running...\n' "$(date -u "+%Y-%m-%d %H:%M:%S")" "${shortname}" "${longname}"

if [[ ! -d "${srcdir}" ]]; then
    printf '%s %s does NOT exist.' "$(date -u "+%Y-%m-%d %H:%M:%S")" "${srcdir}" >&2
    exit 1
else
    if [[ $(mount | grep "${backupvolume}") ]]; then
        # See: http://blog.macromates.com/2006/keychain-access-from-shell/
        # Parse output of 'security' and set RESTIC_PASSWORD:
        export RESTIC_PASSWORD=$(security 2>&1 >/dev/null find-generic-password -ga ${resticuser} |ruby -e 'print $1 if STDIN.gets =~ /^password: "(.*)"$/')
        # Run backup, capturing output in case of error:
        output=$(restic -r ${backupdir} backup "${srcdir}")
        error=$?
        if [[ "${error}" == "0" ]]; then
            printf '%s Restic backup completed successfully.\n' "$(date -u "+%Y-%m-%d %H:%M:%S")"
        else
            printf '%s Restic backup failed: error code: %s, error: %s\n' \
                    "$(date -u "+%Y-%m-%d %H:%M:%S")" "${error}" "${output}" >&2
        fi
    else
        printf '%s %s is NOT mounted.' "$(date -u "+%Y-%m-%d %H:%M:%S")" "${backupvolume}" >&2
        exit 1
    fi
fi

printf '%s %s ended.\n' "$(date -u "+%Y-%m-%d %H:%M:%S")" "${shortname}"

Bạn có thể dẫn nó đến wc -l để đếm các ion và sử dụng grep/cut/awk/perl/... để trích xuất ID.
nohillside

tôi chỉ ghi lại rằng restic hỗ trợ xóa bằng các chính sách. Vì vậy, tôi không cần kiểm tra và sắp xếp mà thay vào đó hãy thêm một số giá trị để định cấu hình và kiểm tra chính sách khi tôi thực thi tập lệnh ...
novski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.