DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T f

⟦efb6e07c0⟧ TextFile

    Length: 1197 (0x4ad)
    Types: TextFile
    Names: »findcp«

Derivation

└─⟦4f9d7c866⟧ Bits:30007245 EUUGD6: Sikkerheds distributionen
    └─⟦b5330643c⟧ »./cops/perl-4.019/perl.tar.Z« 
        └─⟦2b9a58213⟧ 
            └─⟦this⟧ »perl-4.019/eg/findcp« 

TextFile

#!/usr/bin/perl

# $Header: findcp,v 4.0 91/03/20 01:09:37 lwall Locked $

# This is a wrapper around the find command that pretends find has a switch
# of the form -cp host:destination.  It presumes your find implements -ls.
# It uses tar to do the actual copy.  If your tar knows about the I switch
# you may prefer to use findtar, since this one has to do the tar in batches.

sub copy {
    `tar cf - $list | rsh $desthost cd $destdir '&&' tar xBpf -`;
}

$sourcedir = $ARGV[0];
if ($sourcedir =~ /^\//) {
    $ARGV[0] = '.';
    unless (chdir($sourcedir)) { die "Can't find directory $sourcedir: $!"; }
}

$args = join(' ',@ARGV);
if ($args =~ s/-cp *([^ ]+)/-ls/) {
    $dest = $1;
    if ($dest =~ /(.*):(.*)/) {
	$desthost = $1;
	$destdir = $2;
    }
    else {
	die "Malformed destination--should be host:directory";
    }
}
else {
    die("No destination specified");
}

open(find,"find $args |") || die "Can't run find for you: $!";

while (<find>) {
    @x = split(' ');
    if ($x[2] =~ /^d/) { next;}
    chop($filename = $x[10]);
    if (length($list) > 5000) {
	do copy();
	$list = '';
    }
    else {
	$list .= ' ';
    }
    $list .= $filename;
}

if ($list) {
    do copy();
}