Make a backup file: Difference between revisions
Content deleted Content added
add Ruby |
m →{{header|Ruby}}: fix the sorting |
||
Line 50: | Line 50: | ||
filename = File.readlink(filename) if File.symlink?(filename) |
filename = File.readlink(filename) if File.symlink?(filename) |
||
bkup = filename + ".backup" |
bkup = filename + ".backup" |
||
Dir.glob(bkup + "*"). |
backup_files = Dir.glob(bkup + "*").sort_by do |f| |
||
f.match(/\d+$/) |
|||
$&.nil? ? 0 : $&.to_i |
|||
end |
|||
backup_files.reverse.each do |fname| |
|||
if m = fname.match(/\.backup\.(\d+)$/) |
if m = fname.match(/\.backup\.(\d+)$/) |
||
File.rename(fname, "%s.%d" % [bkup, m[1].to_i + 1]) |
File.rename(fname, "%s.%d" % [bkup, m[1].to_i + 1]) |
||
Line 61: | Line 65: | ||
end |
end |
||
1.upto(12).each {|i| backup(ARGV[0]) {|fh| fh.puts "backup #{i}"}}</lang> |
|||
backup_and_open(ARGV[0]) {|fh| fh.puts "some more new text"}</lang> |
|||
Example: |
Example: |
||
<pre>$ echo "original" > |
<pre>$ echo "original" > original |
||
$ ruby backup.rb test.file |
|||
$ ls -l test.file* |
|||
⚫ | |||
⚫ | |||
⚫ | |||
$ cat test.file |
|||
some more new text |
|||
$ cat test.file.backup |
|||
new text |
|||
$ cat test.file.backup.1 |
|||
⚫ | |||
$ touch original |
|||
$ ln -s original linkfile |
$ ln -s original linkfile |
||
$ ruby backup.rb linkfile |
$ ruby backup.rb linkfile |
||
$ ls -l linkfile* original* |
$ ls -l linkfile* original* |
||
lrwxrwxrwx 1 glennj mkgroup-l-d 8 Nov 11 11:22 linkfile -> original |
lrwxrwxrwx 1 glennj mkgroup-l-d 8 Nov 11 11:22 linkfile -> original |
||
-rw-rw-rw-+ 1 glennj mkgroup-l-d |
-rw-rw-rw-+ 1 glennj mkgroup-l-d 10 Nov 11 11:41 original |
||
-rw-rw-rw-+ 1 glennj mkgroup-l-d |
-rw-rw-rw-+ 1 glennj mkgroup-l-d 10 Nov 11 11:41 original.backup |
||
-rw-rw-rw-+ 1 glennj mkgroup-l-d |
-rw-rw-rw-+ 1 glennj mkgroup-l-d 10 Nov 11 11:41 original.backup.1 |
||
-rw-rw-rw-+ 1 glennj mkgroup-l-d 9 Nov 11 11:41 original.backup.10 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
-rw-rw-rw-+ 1 glennj mkgroup-l-d 9 Nov 11 11:41 original.backup.4 |
|||
-rw-rw-rw-+ 1 glennj mkgroup-l-d 9 Nov 11 11:41 original.backup.5 |
|||
-rw-rw-rw-+ 1 glennj mkgroup-l-d 9 Nov 11 11:41 original.backup.6 |
|||
-rw-rw-rw-+ 1 glennj mkgroup-l-d 9 Nov 11 11:41 original.backup.7 |
|||
-rw-rw-rw-+ 1 glennj mkgroup-l-d 9 Nov 11 11:41 original.backup.8 |
|||
-rw-rw-rw-+ 1 glennj mkgroup-l-d 9 Nov 11 11:41 original.backup.9 |
|||
$ cat original original.backup original.backup.1 original.backup.2 original.backup.3 original.backup.4 original.backup.5 original.backup.6 original.backup.7 original.backup.8 original.backup.9 original.backup.10 original.backup.11 |
|||
backup 12 |
|||
backup 11 |
|||
backup 10 |
|||
backup 9 |
|||
backup 8 |
|||
backup 7 |
|||
backup 6 |
|||
backup 5 |
|||
backup 4 |
|||
backup 3 |
|||
backup 2 |
|||
backup 1 |
|||
⚫ | |||
=={{header|Tcl}}== |
=={{header|Tcl}}== |