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
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
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
> 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
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 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
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
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
If in bash, you could try with set -x and see if you get something
useful upon invocation of tar.
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