App-DistSync
view release on metacpan or search on metacpan
The resource directory is the root of the mirror and contains all files and descriptors. A single server may host multiple resources with different URLs.
Some descriptor files **must not** be edited manually â they are marked accordingly.
### META
*NOT EDITABLE.* A YAML file containing metadata about the resource, including the last synchronization time. Also provides system information required by other mirrors.
### MANIFEST
*NOT EDITABLE.* Generated automatically on each run. Describes the current directory structure. After sync completion, it is regenerated and the `mtime` field in `META` is updated.
Format:
```
DIRNAME/FILENAME MTIME SIZE MTIME_AS_STRING
```
Paths are relative, with `/` used as the separator regardless of OS.
### MANIFEST.SKIP
### MANIFEST.TEMP
*NOT EDITABLE.* Temporary file holding downloaded data. May persist between runs.
### README
Optional, local-only informational file. Not synchronized. If you need it to sync, use `README.md` instead.
## GETTING STARTED
After initialization, edit the `MIRRORS` file and add the new mirrorâs URL. Then upload the updated file to any existing mirror so others can discover the new resource.
Run the first synchronization:
```bash
distsync -D /var/www/foo.localhost sync -d
```
`-d` enables progress output; `-dv` adds more verbose diagnostics.
### Important option
lib/App/DistSync.pm view on Meta::CPAN
debug(" Modified : %s", $remote_datef);
debug(" Hostname : %s", $remote_meta->{hostname} // '');
debug(" Directory : %s", $remote_meta->{directory} // '');
debug(" Project : %s v%s",
$remote_meta->{project} || ref($self), $remote_meta->{version} // '0.01');
debug(" Script : %s", $remote_meta->{script} // '');
debug(" Status : %s", $remote_ok ? "OK" : "EXPIRED");
debug(" Time : %d sec", $remote_meta->{'time'} || 0);
}
unless ($remote_ok) {
debug("> [SKIPPED] Remote resource is expired. Last updated: %s", $remote_datef);
next
}
} else {
debug("> [SKIPPED] Remote resource is broken. Please contact the administrator of this resource");
next;
}
} else {
printf STDERR "Can't download \"%s\": %s\n", $fetch_meta->{url}, $fetch_meta->{message};
}
}
lib/App/DistSync.pm view on Meta::CPAN
say sprintf " Resource URL : %s%s", $remote_url, $self_mode ? " (LOCAL RESOURCE)" : '';
say sprintf " Status : %s", $remote_ok ? "OK" : "EXPIRED";
say sprintf " Date : %s", $remote_meta->{date} // 'UNKNOWN';
say sprintf " Modified : %s", $remote_datef;
say sprintf " Hostname : %s", $remote_meta->{hostname} // '';
say sprintf " Directory : %s", $remote_meta->{directory} // '';
say sprintf " Project : %s v%s", $remote_meta->{project} || ref($self), $remote_meta->{version} // '';
say sprintf " Script : %s", $remote_meta->{script} // $Script;
say sprintf " Time : %d sec", $remote_meta->{'time'} || 0;
unless ($remote_ok) {
say STDERR sprintf "NOTE! The resource is expired. Last updated: %s", $remote_datef;
next
}
} else {
printf STDERR "Can't download \"%s\": %s\n", $meta->{url}, $meta->{message};
}
}
}
return 1;
}
( run in 1.354 second using v1.01-cache-2.11-cpan-39bf76dae61 )