Screenshot instructions:
Windows
Mac
Red Hat Linux
Ubuntu
Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(19) |
Nov
(2) |
Dec
(23) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(18) |
Feb
(15) |
Mar
(27) |
Apr
(6) |
May
(40) |
Jun
(53) |
Jul
(67) |
Aug
(107) |
Sep
(75) |
Oct
(74) |
Nov
(73) |
Dec
(63) |
2003 |
Jan
(93) |
Feb
(97) |
Mar
(72) |
Apr
(129) |
May
(110) |
Jun
(97) |
Jul
(151) |
Aug
(124) |
Sep
(66) |
Oct
(216) |
Nov
(105) |
Dec
(151) |
2004 |
Jan
(107) |
Feb
(181) |
Mar
(235) |
Apr
(212) |
May
(231) |
Jun
(231) |
Jul
(264) |
Aug
(278) |
Sep
(173) |
Oct
(259) |
Nov
(164) |
Dec
(244) |
2005 |
Jan
(318) |
Feb
(206) |
Mar
(287) |
Apr
(222) |
May
(240) |
Jun
(255) |
Jul
(166) |
Aug
(289) |
Sep
(233) |
Oct
(200) |
Nov
(307) |
Dec
(170) |
2006 |
Jan
(289) |
Feb
(270) |
Mar
(306) |
Apr
(150) |
May
(181) |
Jun
(263) |
Jul
(181) |
Aug
(291) |
Sep
(147) |
Oct
(155) |
Nov
(381) |
Dec
(310) |
2007 |
Jan
(431) |
Feb
(306) |
Mar
(378) |
Apr
(216) |
May
(313) |
Jun
(235) |
Jul
(373) |
Aug
(171) |
Sep
(459) |
Oct
(642) |
Nov
(464) |
Dec
(419) |
2008 |
Jan
(374) |
Feb
(445) |
Mar
(400) |
Apr
(406) |
May
(374) |
Jun
(346) |
Jul
(387) |
Aug
(302) |
Sep
(255) |
Oct
(374) |
Nov
(292) |
Dec
(488) |
2009 |
Jan
(392) |
Feb
(240) |
Mar
(245) |
Apr
(483) |
May
(310) |
Jun
(494) |
Jul
(265) |
Aug
(515) |
Sep
(514) |
Oct
(284) |
Nov
(338) |
Dec
(329) |
2010 |
Jan
(305) |
Feb
(246) |
Mar
(404) |
Apr
(391) |
May
(302) |
Jun
(166) |
Jul
(166) |
Aug
(234) |
Sep
(222) |
Oct
(267) |
Nov
(219) |
Dec
(244) |
2011 |
Jan
(189) |
Feb
(220) |
Mar
(353) |
Apr
(322) |
May
(270) |
Jun
(202) |
Jul
(172) |
Aug
(215) |
Sep
(226) |
Oct
(169) |
Nov
(163) |
Dec
(152) |
2012 |
Jan
(182) |
Feb
(221) |
Mar
(117) |
Apr
(151) |
May
(169) |
Jun
(135) |
Jul
(140) |
Aug
(108) |
Sep
(148) |
Oct
(97) |
Nov
(119) |
Dec
(66) |
2013 |
Jan
(105) |
Feb
(127) |
Mar
(265) |
Apr
(84) |
May
(75) |
Jun
(116) |
Jul
(89) |
Aug
(118) |
Sep
(132) |
Oct
(247) |
Nov
(98) |
Dec
(109) |
2014 |
Jan
(81) |
Feb
(101) |
Mar
(101) |
Apr
(79) |
May
(132) |
Jun
(102) |
Jul
(91) |
Aug
(114) |
Sep
(104) |
Oct
(126) |
Nov
(146) |
Dec
(46) |
2015 |
Jan
(51) |
Feb
(44) |
Mar
(83) |
Apr
(40) |
May
(68) |
Jun
(43) |
Jul
(38) |
Aug
(33) |
Sep
(88) |
Oct
(54) |
Nov
(53) |
Dec
(119) |
2016 |
Jan
(268) |
Feb
(42) |
Mar
(86) |
Apr
(73) |
May
(239) |
Jun
(93) |
Jul
(89) |
Aug
(60) |
Sep
(49) |
Oct
(66) |
Nov
(70) |
Dec
(34) |
2017 |
Jan
(81) |
Feb
(103) |
Mar
(161) |
Apr
(137) |
May
(230) |
Jun
(111) |
Jul
(135) |
Aug
(92) |
Sep
(118) |
Oct
(85) |
Nov
(110) |
Dec
(84) |
2018 |
Jan
(75) |
Feb
(59) |
Mar
(48) |
Apr
(39) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(5) |
2
(2) |
3
(9) |
4
(12) |
5
(5) |
6
(4) |
7
(3) |
8
(4) |
9
(2) |
10
(12) |
11
(1) |
12
(7) |
13
(15) |
14
(6) |
15
|
16
|
17
(13) |
18
(18) |
19
(10) |
20
(7) |
21
(7) |
22
(1) |
23
(6) |
24
(5) |
25
|
26
(9) |
27
(6) |
28
(9) |
29
(1) |
30
(2) |
31
(8) |
|
|
|
|
|
From: Jeffrey J. Kosowsky <backuppc@ko...> - 2011-01-23 17:30:57
|
Jeffrey J. Kosowsky wrote at about 10:48:08 -0500 on Sunday, January 23, 2011: > Looking at MakeFileLink, I realized that it compares the full file > length including the first byte header and the potential rsync digest > trailer. > > So, if one starts using rsync and then switches to another transport > method, won't you get duplicate pool files since new comparisons will > compare a (new) compressed file without rsync digest to an old pool > file with rsync digest? (these files will have the same partial file > md5sum names in the cpool but will have different suffixes) > > This could be a common use case if for example one is backing up mixed > Linux and Windows machines with common files using rsync, and smb > transport, respectively. > > Unless I am missing something, this seem like a potentially major > source of pool data duplication. > > In my jLib.pm, I have written a function zcompare2 that only compares > the compressed zlib data between the first byte header and the > potential rsync digest trailer. Since the zlib data envelope never > changes this gives pool matches even if one file is straight zlib > (first byte =0x78) and the other is rsync digest (first byte = 0xd6 or > 0xd7). > > I have also btw, written a slightly streamlined version of compare > (which I call jcompare) that strips out some unnecessary code for > binary files and also works better with weird filenames. > > I have combined these changes plus the ones mentioned in my earlier > thread on MakeFileLink to create a new jMakeFileLink function that > uses jcompare for non-compressed (pool) files and zcompare2 for > compressed (cpool) files. > > > Here is my version of MakeFileLink that: 1. Includes the code efficiency changes outlined in the other thread 2. Uses jcompare/zcompare2 depending on whether file compressed or not 3. Renames before unlinking so it can be undone: sub jMakeFileLink2 { my($bpc, $name, $d, $newFile, $compress) = @_; my($i, $rawFile); return -1 unless -f $name; return -2 unless defined($rawFile = $bpc->MD52Path($d, $compress)); my $compare = $compress > 0 ? \&zcompare2 : \&jcompare; for ( $i = -1 ; ; $i++ ) { $rawFile .= "_$i" if $i >= 0; if ( -f $rawFile ) { if ( (stat(_))[3] < $bpc->{Conf}{HardLinkMax} && !$compare->($name, $rawFile) ) { my $tempname = mktemp("$name.XXXXXXXXXXXXXXXX"); return -5 unless rename($name, $tempname); unless(link($rawFile, $name)) { rename($tempname, $name); #Restore return -3; } unlink($tempname); return 1; } } elsif ( $newFile && (stat($name))[3] == 1 ) { $rawFile =~ m{(.*)/}; mkpath($1, 0, 0777) unless -d $1 ; return -4 unless link($name, $rawFile); return 2; } else { return 0; } } } |
From: Jeffrey J. Kosowsky <backuppc@ko...> - 2011-01-23 17:25:43
|
Jeffrey J. Kosowsky wrote at about 01:09:10 -0500 on Sunday, January 23, 2011: > It seems there are some extra tests and computation that are not > necessary. I will show my suggested changes with +/- style diff > Am I missing something? > > > sub MakeFileLink > { > my($bpc, $name, $d, $newFile, $compress) = @_; > my($i, $rawFile); > > return -1 if ( !-f $name ); > + return -2 if ( !defined($rawFile = $bpc->MD52Path($d, $compress)) ); > for ( $i = -1 ; ; $i++ ) { > - return -2 if ( !defined($rawFile = $bpc->MD52Path($d, $compress)) ); > $rawFile .= "_$i" if ( $i >= 0 ); > if ( -f $rawFile ) { > if ( (stat(_))[3] < $bpc->{Conf}{HardLinkMax} > && !compare($name, $rawFile) ) { > unlink($name); > return -3 if ( !link($rawFile, $name) ); > return 1; > } > - } elsif ( $newFile && -f $name && (stat($name))[3] == 1 ) { > + } elsif ( $newFile && -f $name && (stat($_))[3] == 1 ) { > - my($newDir); > - ($newDir = $rawFile) =~ s{(.*)/.*}{$1}; > + $rawfile =~ m{(.*)/} > - mkpath($newDir, 0, 0777) if ( !-d $newDir ); > + mkpath($1, 0, 0777) if ( !-d $1 ); > return -4 if ( !link($name, $rawFile) ); > return 2; > } else { > return 0; > } > } > } > One more improvement suggestion... Since the file is unlinked before making the new link there is a danger that you delete the file but then fail to make the link resulting in data loss. A suggested solution would be to rename first so the file can be restored in case linking fails: if ( (stat(_))[3] < $bpc->{Conf}{HardLinkMax} && !$compare->($name, $rawFile) ) { my $tempname = mktemp("$name.XXXXXXXXXXXXXXX"); return -5 unless rename($name, $tempname); unless(link($rawFile, $name)) { rename($tempname, $name); #Restore return -3; } unlink($tempname); return 1; } |
From: Jeffrey J. Kosowsky <backuppc@ko...> - 2011-01-23 15:48:21
|
Looking at MakeFileLink, I realized that it compares the full file length including the first byte header and the potential rsync digest trailer. So, if one starts using rsync and then switches to another transport method, won't you get duplicate pool files since new comparisons will compare a (new) compressed file without rsync digest to an old pool file with rsync digest? (these files will have the same partial file md5sum names in the cpool but will have different suffixes) This could be a common use case if for example one is backing up mixed Linux and Windows machines with common files using rsync, and smb transport, respectively. Unless I am missing something, this seem like a potentially major source of pool data duplication. In my jLib.pm, I have written a function zcompare2 that only compares the compressed zlib data between the first byte header and the potential rsync digest trailer. Since the zlib data envelope never changes this gives pool matches even if one file is straight zlib (first byte =0x78) and the other is rsync digest (first byte = 0xd6 or 0xd7). I have also btw, written a slightly streamlined version of compare (which I call jcompare) that strips out some unnecessary code for binary files and also works better with weird filenames. I have combined these changes plus the ones mentioned in my earlier thread on MakeFileLink to create a new jMakeFileLink function that uses jcompare for non-compressed (pool) files and zcompare2 for compressed (cpool) files. |
From: Jeffrey J. Kosowsky <backuppc@ko...> - 2011-01-23 15:36:46
|
Jeffrey J. Kosowsky wrote at about 01:09:10 -0500 on Sunday, January 23, 2011: > It seems there are some extra tests and computation that are not > necessary. I will show my suggested changes with +/- style diff > Am I missing something? > > > sub MakeFileLink > { > my($bpc, $name, $d, $newFile, $compress) = @_; > my($i, $rawFile); > > return -1 if ( !-f $name ); > + return -2 if ( !defined($rawFile = $bpc->MD52Path($d, $compress)) ); > for ( $i = -1 ; ; $i++ ) { > - return -2 if ( !defined($rawFile = $bpc->MD52Path($d, $compress)) ); > $rawFile .= "_$i" if ( $i >= 0 ); > if ( -f $rawFile ) { > if ( (stat(_))[3] < $bpc->{Conf}{HardLinkMax} > && !compare($name, $rawFile) ) { > unlink($name); > return -3 if ( !link($rawFile, $name) ); > return 1; > } > - } elsif ( $newFile && -f $name && (stat($name))[3] == 1 ) { > + } elsif ( $newFile && -f $name && (stat($_))[3] == 1 ) { > - my($newDir); > - ($newDir = $rawFile) =~ s{(.*)/.*}{$1}; > + $rawfile =~ m{(.*)/} > - mkpath($newDir, 0, 0777) if ( !-d $newDir ); > + mkpath($1, 0, 0777) if ( !-d $1 ); > return -4 if ( !link($name, $rawFile) ); > return 2; > } else { > return 0; > } > } > } I noticed I left the final semicolon off of the line: + $rawfile =~ m{(.*)/} Also, instead of: + } elsif ( $newFile && -f $name && (stat($_))[3] == 1 ) { one could perhaps better use: + } elsif ( $newFile && (stat($fname))[3] == 1 ) { since -f $fname was already tested above. |
From: Jeffrey J. Kosowsky <backuppc@ko...> - 2011-01-23 06:09:19
|
It seems there are some extra tests and computation that are not necessary. I will show my suggested changes with +/- style diff Am I missing something? sub MakeFileLink { my($bpc, $name, $d, $newFile, $compress) = @_; my($i, $rawFile); return -1 if ( !-f $name ); + return -2 if ( !defined($rawFile = $bpc->MD52Path($d, $compress)) ); for ( $i = -1 ; ; $i++ ) { - return -2 if ( !defined($rawFile = $bpc->MD52Path($d, $compress)) ); $rawFile .= "_$i" if ( $i >= 0 ); if ( -f $rawFile ) { if ( (stat(_))[3] < $bpc->{Conf}{HardLinkMax} && !compare($name, $rawFile) ) { unlink($name); return -3 if ( !link($rawFile, $name) ); return 1; } - } elsif ( $newFile && -f $name && (stat($name))[3] == 1 ) { + } elsif ( $newFile && -f $name && (stat($_))[3] == 1 ) { - my($newDir); - ($newDir = $rawFile) =~ s{(.*)/.*}{$1}; + $rawfile =~ m{(.*)/} - mkpath($newDir, 0, 0777) if ( !-d $newDir ); + mkpath($1, 0, 0777) if ( !-d $1 ); return -4 if ( !link($name, $rawFile) ); return 2; } else { return 0; } } } |
From: Jeffrey J. Kosowsky <backuppc@ko...> - 2011-01-23 00:49:34
|
I know that in the fmangled, file listing, "/" is converted to %2f and presumably so are things like spaces, linefeeds and other non alphanumeric ASCII characters. But what about non-ASCII charsets like the ISO's and UTF8? What about in the attrib file? Thanks |