I am and have been reading http://samba.org/ftp/rsync/rsync.html, which
is one web page but 44 real pages. I see that FILE is a term used the
rsynch script. Is this something output from the php script, and if so
how is it channelled from one to the other?
I see the following:
- start quote -
****
**--exclude-from=FILE**
This option is related to the *--exclude* option, but it specifies a
FILE that contains exclude patterns (one per line). Blank lines in
the file and lines starting with ';' or '#' are ignored. If /FILE/
is *-*, the list will be read from standard input.
**--include-from=FILE**
This option is related to the *--include* option, but it specifies a
FILE that contains include patterns (one per line). Blank lines in
the file and lines starting with ';' or '#' are ignored. If /FILE/
is *-*, the list will be read from standard input.
**--files-from=FILE**
Using this option allows you to specify the exact list of files to
transfer (as read from the specified FILE or *-* for standard
input). It also tweaks the default behavior of rsync to make
transferring just the specified files and directories easier:
* The *--relative* (*-R*) option is implied, which preserves
the path information that is specified for each item in
the file (use *--no-relative* or *--no-R* if you want to
turn that off).
* The *--dirs* (*-d*) option is implied, which will create
directories specified in the list on the destination
rather than noisily skipping them (use *--no-dirs* or
*--no-d* if you want to turn that off).
* The *--archive* (*-a*) option's behavior does not imply
*--recursive* (*-r*), so specify it explicitly, if you
want it.
* These side-effects change the default state of rsync, so
the position of the *--files-from* option on the
command-line has no bearing on how other options are
parsed (e.g. *-a* works the same before or after
*--files-from*, as does *--no-R* and all other options).
The filenames that are read from the FILE are all relative to the
source dir -- any leading slashes are removed and no ".." references
are allowed to go higher than the source dir. For example, take this
command:
|rsync -a --files-from=/tmp/foo /usr remote:/backup|
If /tmp/foo contains the string "bin" (or even "/bin"), the /usr/bin
directory will be created as /backup/bin on the remote host. If it
contains "bin/" (note the trailing slash), the immediate contents of
the directory would also be sent (without needing to be explicitly
mentioned in the file -- this began in version 2.6.4). In both
cases, if the *-r* option was enabled, that dir's entire hierarchy
would also be transferred (keep in mind that *-r* needs to be
specified explicitly with *--files-from*, since it is not implied by
*-a*). Also note that the effect of the (enabled by default)
*--relative* option is to duplicate only the path info that is read
from the file -- it does not force the duplication of the
source-spec path (/usr in this case).
In addition, the *--files-from* file can be read from the remote
host instead of the local host if you specify a "host:" in front of
the file (the host must match one end of the transfer). As a
short-cut, you can specify just a prefix of ":" to mean "use the
remote end of the transfer". For example:
|rsync -a --files-from=:/path/file-list src:/ /tmp/copy|
This would copy all the files specified in the /path/file-list file
that was located on the remote "src" host.
- end quote -
but I don't understand anything really from the synopsis:
- start quote -
SYNOPSIS
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
- end quote -
What is push and pull?
I am guessing I might achieve something by writing a rsynch script with
lines like:
|rsync -avz foo:src/bar/ /data/tmp
save it as rsynch.txt and call it from a cron job. I don't understand
how I build up a file list of the jpgs I want to copy. Patterns will
not do it. I need to create an array from the database and get those
files into the new site.
John
|
Mr Webber wrote:
FILE is there reference from the man page. It contains the files to include
in the sync.
Have you read the man page for rsync?
-----Original Message-----
From: ioannes [mailto:ioannes@xxxxxxxxxxxxxx]
Sent: Tuesday, February 05, 2008 9:48 AM
To: php-db@xxxxxxxxxxxxx
Subject: Re: Copying an image from one server to another
I was unsure what was meant by FILE in php - is that the global? How do
I reference a remote site's jpg file into FILE? Then how to I create
the output from the php into stdout - using the return of a function?
or print? Then how to launch rsynch - I understand how to call it from
cron, as my web server kindly gives me an interface for this, but to
create the file I would need to know what extension to save with the
script name, and how to make it execute, ie the equivalent of <?php for
rsynch scripts. Then how is FILE read by rsynch script. So lots more
questions just to copy a publicly available image into my site. There
has got to be an easier way.
John
Mr Webber wrote:
Note the rsync option:
--include-from=FILE
This option is related to the --include option, but it
specifies
a FILE that contains include patterns (one per line). Blank
lines in the file and lines starting with ';' or '#' are ignored.
If
FILE is -, the list will be read from standard input.
So, from a PhpScript, you manage the contents of "FILE" and then launch
rsync with the appropriate additional options.
-----Original Message-----
From: ioannes [mailto:ioannes@xxxxxxxxxxxxxx]
Sent: Monday, February 04, 2008 12:59 PM
To: php-db@xxxxxxxxxxxxx
Subject: Re: Copying an image from one server to another
Initially I could not find much on SCP and rsynch is about synchronising
folders, but that is only part of the problem. I don't want files in
the target location that are not referenced from the target database. I
hold references like this
img[]=pic1.jpg&img[]=pic2.jpg
then I parse it out into the img array.
So I want to do it from php programming and am on a shared server. I
may have access to the terminal for linux/unix but I am not too strong
in that area. So am I wrong to be still thinking of cURL?
John
Aleksandar Vojnovic wrote:
How about sending the file via SCP? (it would be a much more safer to
transfer files)
-Aleksander
Chris wrote:
ioannes wrote:
I am trying to:
- check whether an image file exists on a server,
- check whether it does not exist on another server, and if not exists
- to copy from the first location to the second.
I am using cURL. First step to capture the image from the first
server. When I return this image to the browser I get a lot of
strange characters. So has this captured the image and what do I
use next to upload to the second server?
I was trying to use file_exists and had problems referencing the
file location as "http://wwww.mysite.com/pic.jpg". But I know I can
also look at using readfile() and file_put_contents(), $fp =
fopen(), fputs(), fpassthru() etc. What is best way?
FTP.
There's no way fopen is going to be able to write to a remote url,
that'd just be such a huge security issue it's not funny.
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php