Re: Copying an image from one server to another
| From: | ioannes | Date: | Tue, 05 Feb 2008 18:21:56 +0000 |
| Subject: | Re: Copying an image from one server to another | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-44574@lists.php.net to get a copy of this message | ||
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@btinternet.com] Sent: Tuesday, February 05, 2008 9:48 AM To: php-db@lists.php.net Subject: Re: [PHP-DB] 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=FILEspecifiesThis option is related to the --include option, but ita FILE that contains include patterns (one per line). Blank lines in the file and lines starting with ';' or '#' are ignored.IfFILE 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@btinternet.com] Sent: Monday, February 04, 2008 12:59 PM To: php-db@lists.php.net Subject: Re: [PHP-DB] 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: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.-Aleksander Chris wrote:How about sending the file via SCP? (it would be a much more safer to transfer files)- 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?ioannes wrote:I am trying to: