Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

tar --remove-files

301 views
Skip to first unread message

Philipp Ghirardini

unread,
Jun 15, 2008, 8:54:11 AM6/15/08
to
hi!

I have the following problem:

I want to pack all files in a special directory except some particular
ones and delete them afterwards. The files shall be in the archive
without subdirectories.

I have the following tar command:

tar --remove-files -C /net_tests/tests/dir_one -czf
/net_tests/tests/dir_one/myzip.tar.gz . --exclude=file3
--exclude=myzip.tar.gz


Actually it does exactly what I want but it returns 2 and not 0 because
of the following reason:

tar: .: Cannot rmdir: Invalid argument
tar: Error exit delayed from previous errors


I think the problem is that the command is packing the '.' and so it is
trying to remove it what fails of course.
I also creates a subdirectory '.' in the archive. Actually it doesn't
matter because when unpacking the archive that has no effect.

The problem is that I need the return value to check if the action was
successful.

Has anyone an idea?

kind regards

Philipp

J.O. Aho

unread,
Jun 15, 2008, 9:16:20 AM6/15/08
to
Philipp Ghirardini wrote:
> hi!
>
> I have the following problem:
>
> I want to pack all files in a special directory except some particular
> ones and delete them afterwards. The files shall be in the archive
> without subdirectories.
>
> I have the following tar command:
>
> tar --remove-files -C /net_tests/tests/dir_one -czf
> /net_tests/tests/dir_one/myzip.tar.gz . --exclude=file3
> --exclude=myzip.tar.gz
>
>
> Actually it does exactly what I want but it returns 2 and not 0 because
> of the following reason:
>
> tar: .: Cannot rmdir: Invalid argument
> tar: Error exit delayed from previous errors
>
>
> I think the problem is that the command is packing the '.' and so it is
> trying to remove it what fails of course.

I think the tar is trying to delete dir_one, it could be better you
switch to the directory in question, run the command (without the
paths), think that will result in a 0.


--

//Aho

Philipp Ghirardini

unread,
Jun 15, 2008, 9:50:08 AM6/15/08
to

Thanks for your fast reply.

I think I'm doing that with the command -C.
I jump into the directory '/net_tests/tests/dir_one'
There I perform the packing on all files located '.'.

I now tried to change the directory by hand and perform the following
command:

tar --remove-files -czf myzip.tar.gz . --exclude=file3
--exclude=myzip.tar.gz

but got the same result.

regards Philipp


jellybean stonerfish

unread,
Jun 15, 2008, 11:41:08 AM6/15/08
to
On Sun, 15 Jun 2008 14:54:11 +0200, Philipp Ghirardini wrote:


> I have the following tar command:
>
> tar --remove-files -C /net_tests/tests/dir_one -czf
> /net_tests/tests/dir_one/myzip.tar.gz . --exclude=file3
> --exclude=myzip.tar.gz

> I think the problem is that the command is packing the '.' and so it is


> trying to remove it what fails of course. I also creates a subdirectory
> '.' in the archive. Actually it doesn't matter because when unpacking
> the archive that has no effect.
>

> Philipp

Can you use a * to get all the files rather than a . to get the dir?

stonerfish

Philipp Ghirardini

unread,
Jun 15, 2008, 12:50:56 PM6/15/08
to
No, I tried that but than I got :


tar: compile.sh: Cannot stat: No such file or directory
tar: test_23s.cpp: Cannot stat: No such file or directory
tar: test_23s_inp.cpp: Cannot stat: No such file or directory
tar: test_9s.cpp: Cannot stat: No such file or directory
tar: test_9s_inp.cpp: Cannot stat: No such file or directory
tar: test_fast.cpp: Cannot stat: No such file or directory
tar: test_fast_inp.cpp: Cannot stat: No such file or directory


tar: Error exit delayed from previous errors

Which are the files in the directory where i did the call and not the
files of the directory I want to archive.

jellybean stonerfish

unread,
Jun 15, 2008, 1:05:51 PM6/15/08
to
On Sun, 15 Jun 2008 18:50:56 +0200, Philipp Ghirardini wrote:

> jellybean stonerfish wrote:
>> On Sun, 15 Jun 2008 14:54:11 +0200, Philipp Ghirardini wrote:
>>
>>
>>> I have the following tar command:
>>>
>>> tar --remove-files -C /net_tests/tests/dir_one -czf
>>> /net_tests/tests/dir_one/myzip.tar.gz . --exclude=file3
>>> --exclude=myzip.tar.gz
>>
>>> I think the problem is that the command is packing the '.' and so it
>>> is trying to remove it what fails of course. I also creates a
>>> subdirectory '.' in the archive. Actually it doesn't matter because
>>> when unpacking the archive that has no effect.
>>>
>>> Philipp
>>
>> Can you use a * to get all the files rather than a . to get the dir?
>>
>> stonerfish
>>
> No, I tried that but than I got :

Ok I think I see something.
What dir are you in when running tar? The . means what in your original
post?
Are you in /net_tests/tests/dir_one
if not try (backslashes added)

tar --remove-files -C /net_tests/tests/dir_one -czf \

/net_tests/tests/dir_one/myzip.tar.gz /net_tests/tests/dir_one/* \
--exclude=file3 --exclude=myzip.tar.gz


sf

Philipp Ghirardini

unread,
Jun 15, 2008, 1:47:22 PM6/15/08
to

Using this command exits with 0 but now i have the problem again that
the archiv consists the whole path (/net_tests/tests/dir_one/...).
replacing this part with ./* doesn't work.

regards Philipp

jellybean stonerfish

unread,
Jun 15, 2008, 3:37:26 PM6/15/08
to
On Sun, 15 Jun 2008 15:50:08 +0200, Philipp Ghirardini wrote:

Did you do * here when you changed to this directory by hand? It seems
to work for me. Also have you played with --strip or --strip-components?

js@blackbox:~/test$ ls -l
total 12
-rw-r--r-- 1 js js 29 2008-06-15 12:09 apple -rw-r--r-- 1 js js 24
2008-06-15 12:09 banana -rw-r--r-- 1 js js 139 2008-06-15 12:11
test.tar.gz

js@blackbox:~/test$ tar --remove-files -czf test.tar.gz * \
--exclude=banana --exclude=test.tar.gz

js@blackbox:~/test$ ls -l
total 8
-rw-r--r-- 1 js js 24 2008-06-15 12:09 banana -rw-r--r-- 1 js js 139
2008-06-15 12:16 test.tar.gz

js@blackbox:~/test$ tar -f test.tar.gz -t apple

FrenKy

unread,
Jun 16, 2008, 5:41:27 PM6/16/08
to

If in bash, you could try with set -x and see if you get something
useful upon invocation of tar.

noi ance

unread,
Jun 17, 2008, 2:12:37 PM6/17/08
to
On Sun, 15 Jun 2008 19:47:22 +0200, Philipp Ghirardini typed this message:

Could it be you're having a problem because you're creating the
myzip.tar.gz in the same folder/dir that you're trying to archive and
remove files?

tar --remove-files -C /net_tests/tests/dir_one -czf \
/tmp/myzip.tar.gz /net_tests/tests/dir_one . \
--exclude=file3

0 new messages