[PATCH] adding two new options to 'cp'

Eric Anderson anderson at centtech.com
Mon Jul 31 17:42:00 UTC 2006


On 07/31/06 12:28, Rick C. Petty wrote:
> On Mon, Jul 31, 2006 at 05:47:09PM +0200, Juan Rodriguez wrote:
>> My GNU version of "cp" has more than 18 options, the FreeBSD
>> version only has 9.
>>
>> As I usually work with Linux machines, I'm used to "cp -a" and I have always
>> hated to have to look up in the FreeBSD's "cp" manual page for the right
>> options to get the same funtionality.   I tend to think
>> that "-a" is option bloating because it's not really needed, but I see
>> "-l" as a new feature for "cp" that might be useful.
> 
> I agree, -a is bloat.  However I don't understand why you say:
> 
>> To sum it up, I think "cp -a" and "cp -l" are both useful,
> 
> I agree that the "-l" option *may* be useful.
> 
>> the first one
>> because of compatibility with the large base of Linux systems out there, and
>> the second one because I think it's a useful feature for the FreeBSD "cp".
> 
> In both cases, why don't you just use:
> 
> /usr/compat/linux/bin/cp

Two reasons - it's not in the base system, so a port has to be installed 
- and linux_base is FC3 now, so if you want to talk about bloat... 
Another reason is gcp fails to recursively copy a directory that has 
symlinks in it.

Example:
$ cd /tmp/
$ mkdir test
$ touch test/t
$ ln -s t test/b
$ ls -al test/
drwxr-xr-x   2 anderson  wheel   512 Jul  7 09:39 .
drwxrwxrwt  69 root      wheel  8704 Jul  7 09:39 ..
lrwxr-xr-x   1 anderson  wheel     1 Jul  7 09:39 b -> t
-rw-r--r--   1 anderson  wheel     0 Jul  7 09:39 t
$ gcp -al test/ test2/
$ ls -al test2/
drwxr-xr-x   2 anderson  wheel   512 Jul  7 09:39 .
drwxrwxrwt  70 root      wheel  8704 Jul  7 09:40 ..
-rw-r--r--   3 anderson  wheel     0 Jul  7 09:39 b
-rw-r--r--   3 anderson  wheel     0 Jul  7 09:39 t

( you can see it made a resolved the symlink and made a hardlink to the 
symlink destination, not exactly what I would want, but didn't fail)

However, now do:
$ ln -s /tmp/ test/link-to-dir
$ ls -al test/
drwxr-xr-x   2 anderson  wheel   512 Jul  7 09:43 .
drwxrwxrwt  70 root      wheel  8704 Jul  7 09:40 ..
lrwxr-xr-x   1 anderson  wheel     1 Jul  7 09:39 b -> t
lrwxr-xr-x   1 anderson  wheel     5 Jul  7 09:43 link-to-dir -> /tmp/
-rw-r--r--   3 anderson  wheel     0 Jul  7 09:39 t
$ gcp -al test/ test2/
gcp: cannot create link `test2/test/link-to-dir': Operation not permitted

gcp gets an error when copying symlinks that point to directories.

Eric



-- 
------------------------------------------------------------------------
Eric Anderson        Sr. Systems Administrator        Centaur Technology
Anything that works is better than anything that doesn't.
------------------------------------------------------------------------


More information about the freebsd-hackers mailing list