Простой путь состоит в том, чтобы обойти проблему, состоит в том, чтобы поместить my_folder в переменную оболочки и удалить ведущую наклонную черту с него:
tar -cf - ${my_folder##/} | gzip --rsyncable > my_file.tar.gz
Иначе можно проверить $ {PIPESTATUS [0]} в блоке и использовать ложь, если это не нуль для передачи сигналов об ошибке внешнему процессу:
{ tar -cf - my_folder 2>&1 1>&3 |
grep -v "Removing leading" 1>&2;
[ ${PIPESTATUS[0]} -eq 0 ] && true || false; } 3>&1 |
gzip --rsyncable > my_file.tar.gz
Да, при определенных условиях. inodes файлов не изменится при перемещении их родительского каталога таким образом, открытые дескрипторы файлов все еще будут допустимы. Условия:
Процессы обычно не сохраняют файлы открытыми в журналах долгое время.
Да, можно переместиться / удаляют любой каталог или файл, который используется любым процессом в любое время. Heck, можно удалить исполняемый файл процесса, в то время как он работает, и он продолжит работать.
Однако подготовьтесь к некоторым возможным сценариям:
Файлы будут физически очищены на, удаляют, когда никакой процесс не будет использовать их дескрипторы. Вы будете видеть файлы, перемещенные / удаленный сразу.