RE: [PHP-DB] Copying an image from one server to another
| From: | Mr Webber | Date: | Tue, 05 Feb 2008 18:56:06 +0000 |
| Subject: | RE: [PHP-DB] Copying an image from one server to another | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-44576@lists.php.net to get a copy of this message | ||
The pattern in you --include-from=FILE_CONTAINING_FILENAME_PATTERNS could be
just a list of files that you can generate from your PhpScript. Get it now?
-----Original Message-----
From: ioannes [mailto:ioannes@btinternet.com]
Sent: Tuesday, February 05, 2008 1:22 PM
To: php-db@lists.php.net
Subject: Re: [PHP-DB] Copying an image from one server to another
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.
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php