23.8. Automatyczne wykonywanie kopii zapasowych

Problem

Chcemy utworzyć archiwum katalogu z oznaczeniem daty w celu nagrania go na płytę lub zapisania na innym nośniku.

Rozwiązanie

Poniższy skrypt kopiuje katalog do archiwum oznaczonego datą. Wykorzystano w nim metodę File.versioned_filename zdefiniowaną w „6.14. Tworzenie wersjonowanych kopii pliku”. Dzięki temu można utworzyć wiele kopii zapasowych w tym samym czasie:

require 'fileutils' def backup(from_dir, to_dir, time_format="-%Y%m%d") from_path, from_name = File.split(from_dir) now = Time.now.strftime(time_format) Dir.mkdir(to_dir) unless File.exists? to_dir unless File.directory? to_dir raise ArgumentError, "Argument nie jest katalogiem: #{to_dir}" end to = File.versioned_filename(File.join(to_dir, ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.