Re: Copying an image from one server to another

From: 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=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@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:
    
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.
              


« previous php.db (#44574) next »