Closed sirdud closed 2 years ago
We see the same problem. When I open the tar.gz file with midnight commander, the file names also are truncated. When I use tar –xvzf in the commandline then they are extracted with full names.
I think that the updateSystem
method uses an incompatible version of PharData which struggles with long file names.
function updateSystem($updateArchive, $target_dir = CT_ROOT_DIR) {
logMsg ("extract $updateArchive to $target_dir");
$zip = new PharData($updateArchive);
$zip->extractTo($target_dir);
Or is the .tar.gz in some special/non-standard way?
Additional info from ChurchTools support: in this version the filenames are longer than before. That is why this issue became relevant.
Some filenames in ChurchTools are too long:
in POSIX tar there is a maximum length for the filename (100 chars). So PharData is working correct, but it cannot handle incompatible tar archives:
https://stackoverflow.com/questions/24800217/phardata-limitation-of-file-name-length https://en.wikipedia.org/wiki/Tar_(computing)
I also sent this information to the CT support team hoping they will change the filenames again to be compliant with the POSIX standard. Otherwise the uncompressing of the tar archive has to be done with a different tool.
Thanks folks, will look into this ASAP. Maybe switching to a pure-PHP untar algorithm helps, will try https://github.com/splitbrain/php-archive soon.
It turned out that the conflicting TAR standards are a huge mess indeed.
Will provide detailed information soon, but long story short:
Found no PHP implementation that can handle this correctly, so the only possible way I see currently, on systems with tar
executable installed, is to use a system binary for extraction via PHP's system()
.
Version 4.0, just released, should work on all systems with tar
executable available.
OK, some more information for interested people before closing this issue:
There are actually 6 (!!!) well-known Archive Formats for TAR: https://www.gnu.org/software/tar/manual/html_node/Formats.html#Formats
It seems that most libraries focused on the most wide-spread format called "ustar", defined by POSIX.1-1988 specification.
However, this format does not support long filenames (>= 100 chars), see comparison table.
The latest versions of the GNU tar
CLI tool (also used by CT devs, apparently) implement the most flexible, modern "posix" (or "pax") format. That one is backwards compatible to "ustar", unless filenames are no longer than 100 characters and do not contain any non-ASCII symbols. If that happens, filenames are truncated. :(
The situation is as follows:
PharData
seems to support nothing but good old "ustar" format. It seems to simply ignore the additional blocks with information according to the "posix" format.PHPArchive
library (https://github.com/splitbrain/php-archive) does support the "gnu" format, which also supports unlimited-length filenames, but has been superseded by the even better "posix" standard nowadays.
I guess that CT devs won't want to switch their archive format to "gnu", although that would solve the issue if we include the PHPArchive
library.
There is a pull request with an incomplete pax header parsing implementation, but it has never been completed: https://github.com/splitbrain/php-archive/pull/19tar
binaries will handle any format just fine, as far as I can tell. Therefore, using the system tools seems to be the best option for now.
Since the new ChurchTools Version 3.89.0 is published the autoupdater shows a strange behaviour:
several filenames in system/runtime are pretty long. During the update process the filenames are truncated after 99 characters:
603563:/home/www/p603563/html/churchtools/system/runtime > ll insgesamt 9049 drwxr-xr-x 7 p603563 users 205 24. Aug 10:48 ./ drwxr-xr-x 23 p603563 users 23 24. Aug 10:48 ../ -rw-r--r-- 1 p603563 users 11341 24. Aug 10:48 1129.js -rw-r--r-- 1 p603563 users 17855 24. Aug 10:48 1248.js -rw-r--r-- 1 p603563 users 11225 24. Aug 10:48 128.js -rw-r--r-- 1 p603563 users 11136 24. Aug 10:48 2325.js -rw-r--r-- 1 p603563 users 11359 24. Aug 10:48 2474.js -rw-r--r-- 1 p603563 users 12485 24. Aug 10:48 2567.js -rw-r--r-- 1 p603563 users 23183 24. Aug 10:48 27.js -rw-r--r-- 1 p603563 users 87 24. Aug 10:48 27.js.LICENSE.txt -rw-r--r-- 1 p603563 users 22126 24. Aug 10:48 301.js -rw-r--r-- 1 p603563 users 35971 24. Aug 10:48 3369.js -rw-r--r-- 1 p603563 users 8833 24. Aug 10:48 3656.js -rw-r--r-- 1 p603563 users 16283 24. Aug 10:48 3948.js -rw-r--r-- 1 p603563 users 8703 24. Aug 10:48 4057.js -rw-r--r-- 1 p603563 users 18274 24. Aug 10:48 4264.js -rw-r--r-- 1 p603563 users 117 24. Aug 10:48 4264.js.LICENSE.txt -rw-r--r-- 1 p603563 users 23761 24. Aug 10:48 4393.js -rw-r--r-- 1 p603563 users 13528 24. Aug 10:48 4486.js -rw-r--r-- 1 p603563 users 24860 24. Aug 10:48 4513.js -rw-r--r-- 1 p603563 users 9969 24. Aug 10:48 4522.js -rw-r--r-- 1 p603563 users 10704 24. Aug 10:48 4664.js -rw-r--r-- 1 p603563 users 8774 24. Aug 10:48 4731.js -rw-r--r-- 1 p603563 users 12350 24. Aug 10:48 4864.js -rw-r--r-- 1 p603563 users 12666 24. Aug 10:48 5200.js -rw-r--r-- 1 p603563 users 16218 24. Aug 10:48 530.js -rw-r--r-- 1 p603563 users 11198 24. Aug 10:48 5322.js -rw-r--r-- 1 p603563 users 83 24. Aug 10:48 5322.js.LICENSE.txt -rw-r--r-- 1 p603563 users 40055 24. Aug 10:48 5482.js -rw-r--r-- 1 p603563 users 12889 24. Aug 10:48 5786.js -rw-r--r-- 1 p603563 users 24988 24. Aug 10:48 6169.js -rw-r--r-- 1 p603563 users 23314 24. Aug 10:48 6246.js -rw-r--r-- 1 p603563 users 12347 24. Aug 10:48 6266.js -rw-r--r-- 1 p603563 users 12751 24. Aug 10:48 6397.js -rw-r--r-- 1 p603563 users 23757 24. Aug 10:48 6588.js -rw-r--r-- 1 p603563 users 17960 24. Aug 10:48 692.js -rw-r--r-- 1 p603563 users 26278 24. Aug 10:48 693.js -rw-r--r-- 1 p603563 users 349954 24. Aug 10:48 6982.js -rw-r--r-- 1 p603563 users 81 24. Aug 10:48 6982.js.LICENSE.txt -rw-r--r-- 1 p603563 users 8820 24. Aug 10:48 702.js -rw-r--r-- 1 p603563 users 23705 24. Aug 10:48 7186.js -rw-r--r-- 1 p603563 users 16291 24. Aug 10:48 7187.js -rw-r--r-- 1 p603563 users 11483 24. Aug 10:48 7422.js -rw-r--r-- 1 p603563 users 83 24. Aug 10:48 7422.js.LICENSE.txt -rw-r--r-- 1 p603563 users 17957 24. Aug 10:48 7628.js -rw-r--r-- 1 p603563 users 23143 24. Aug 10:48 7979.js -rw-r--r-- 1 p603563 users 88 24. Aug 10:48 7979.js.LICENSE.txt -rw-r--r-- 1 p603563 users 636 24. Aug 10:48 802.css -rw-r--r-- 1 p603563 users 5652 24. Aug 10:48 802.js -rw-r--r-- 1 p603563 users 11644 24. Aug 10:48 8224.js -rw-r--r-- 1 p603563 users 35979 24. Aug 10:48 8282.js -rw-r--r-- 1 p603563 users 35005 24. Aug 10:48 8471.js -rw-r--r-- 1 p603563 users 8836 24. Aug 10:48 8534.js -rw-r--r-- 1 p603563 users 40054 24. Aug 10:48 8904.js -rw-r--r-- 1 p603563 users 35929 24. Aug 10:48 8910.js -rw-r--r-- 1 p603563 users 10696 24. Aug 10:48 9267.js -rw-r--r-- 1 p603563 users 24837 24. Aug 10:48 9319.js -rw-r--r-- 1 p603563 users 144904 24. Aug 10:48 9344.js -rw-r--r-- 1 p603563 users 153 24. Aug 10:48 9344.js.LICENSE.txt -rw-r--r-- 1 p603563 users 618 24. Aug 10:48 9447.css -rw-r--r-- 1 p603563 users 5653 24. Aug 10:48 9447.js -rw-r--r-- 1 p603563 users 331925 24. Aug 10:48 9561.js -rw-r--r-- 1 p603563 users 12666 24. Aug 10:48 972.js -rw-r--r-- 1 p603563 users 484 24. Aug 10:48 adminSettings-consolidation.css -rw-r--r-- 1 p603563 users 41303 24. Aug 10:48 adminSettings-consolidation.js -rw-r--r-- 1 p603563 users 5948 24. Aug 10:48 adminSettings.css -rw-r--r-- 1 p603563 users 29809 24. Aug 10:48 adminSettings-integrations.js -rw-r--r-- 1 p603563 users 102738 24. Aug 10:48 adminSettings.js -rw-r--r-- 1 p603563 users 7537 24. Aug 10:48 adminSettings-license.css -rw-r--r-- 1 p603563 users 71178 24. Aug 10:48 adminSettings-license.js -rw-r--r-- 1 p603563 users 38177 24. Aug 10:48 adminSettings-modules.js drwxr-xr-x 3 p603563 users 3 24. Aug 10:48 assets/ -rw-r--r-- 1 p603563 users 783908 24. Aug 10:48 assets.js -rw-r--r-- 1 p603563 users 206511 24. Aug 10:48 assets.js.gz -rw-r--r-- 1 p603563 users 2398 24. Aug 10:48 authentication.css -rw-r--r-- 1 p603563 users 19234 24. Aug 10:48 authentication.js -rw-r--r-- 1 p603563 users 1274389 24. Aug 10:48 base.css -rw-r--r-- 1 p603563 users 448 24. Aug 10:48 base.js -rw-r--r-- 1 p603563 users 1654940 24. Aug 10:48 bundle.js -rw-r--r-- 1 p603563 users 750 24. Aug 10:48 bundle.js.LICENSE.txt -rw-r--r-- 1 p603563 users 7745 24. Aug 10:48 calendar.css -rw-r--r-- 1 p603563 users 45302 24. Aug 10:48 calendar.js -rw-r--r-- 1 p603563 users 66 24. Aug 10:48 chat.css -rw-r--r-- 1 p603563 users 14590 24. Aug 10:48 chat.js -rw-r--r-- 1 p603563 users 4227 24. Aug 10:48 checkin.css -rw-r--r-- 1 p603563 users 73469 24. Aug 10:48 checkin.js -rw-r--r-- 1 p603563 users 149 24. Aug 10:48 checkin.js.LICENSE.txt -rw-r--r-- 1 p603563 users 21316 24. Aug 10:48 churchdb.css -rw-r--r-- 1 p603563 users 63240 24. Aug 10:48 churchdb.js -rw-r--r-- 1 p603563 users 8705 24. Aug 10:48 communication.css -rw-r--r-- 1 p603563 users 51796 24. Aug 10:48 communication.js -rw-r--r-- 1 p603563 users 12991 24. Aug 10:48 components.css -rw-r--r-- 1 p603563 users 16470 24. Aug 10:48 components.js drwxr-xr-x 3 p603563 users 6 24. Aug 10:48 css/ -rw-r--r-- 1 p603563 users 3591 24. Aug 10:48 events.css -rw-r--r-- 1 p603563 users 36062 24. Aug 10:48 events.js -rw-r--r-- 1 p603563 users 222 24. Aug 10:48 finance-budgets.css -rw-r--r-- 1 p603563 users 7510 24. Aug 10:48 finance-budgets.js -rw-r--r-- 1 p603563 users 3043 24. Aug 10:48 finance.css -rw-r--r-- 1 p603563 users 4161 24. Aug 10:48 finance-donators.css -rw-r--r-- 1 p603563 users 41104 24. Aug 10:48 finance-donators.js -rw-r--r-- 1 p603563 users 69685 24. Aug 10:48 finance.js -rw-r--r-- 1 p603563 users 292 24. Aug 10:48 finance-masterdata.css -rw-r--r-- 1 p603563 users 75070 24. Aug 10:48 finance-masterdata.js -rw-r--r-- 1 p603563 users 365 24. Aug 10:48 finance-reports.css -rw-r--r-- 1 p603563 users 18499 24. Aug 10:48 finance-reports.js -rw-r--r-- 1 p603563 users 10056 24. Aug 10:48 finance-statements.css -rw-r--r-- 1 p603563 users 191666 24. Aug 10:48 finance-statements.js -rw-r--r-- 1 p603563 users 3980 24. Aug 10:48 finance-transactions.css -rw-r--r-- 1 p603563 users 94918 24. Aug 10:48 finance-transactions.js drwxr-xr-x 2 p603563 users 64 24. Aug 10:48 fonts/ -rw-r--r-- 1 p603563 users 1283892 24. Aug 10:48 global.css -rw-r--r-- 1 p603563 users 448 24. Aug 10:48 global.js -rw-r--r-- 1 p603563 users 18030 24. Aug 10:48 groupfilter.css -rw-r--r-- 1 p603563 users 61680 24. Aug 10:48 groupfilter.js -rw-r--r-- 1 p603563 users 2826 24. Aug 10:48 grouphomepage.css -rw-r--r-- 1 p603563 users 81618 24. Aug 10:48 grouphomepage.js -rw-r--r-- 1 p603563 users 19759 24. Aug 10:48 groups.css -rw-r--r-- 1 p603563 users 144499 24. Aug 10:48 groups.js -rw-r--r-- 1 p603563 users 229 24. Aug 10:48 importCsv.js -rw-r--r-- 1 p603563 users 34072 24. Aug 10:48 js_adminsettings_adminSettingsRouter_js-js_adminsettings_adminSettingsStore_js.js -rw-r--r-- 1 p603563 users 82602 24. Aug 10:48 js_components_AudioPlayer_vue-js_components_VideoPlayer_vue.js -rw-r--r-- 1 p603563 users 11080 24. Aug 10:48 js_components_AudioPlayer_vue-js_components_VideoPlayer_vue-js_form-components_FileUpload_vue.js -rw-r--r-- 1 p603563 users 16167 24. Aug 10:48 js_components_ImageViewerEdit_vue-js_overlays_ImageUploadAndEdit_vue.js -rw-r--r-- 1 p603563 users 60168 24. Aug 10:48 js_form-components_createPersonHelper_js-js_form-components_PersonSearch_vue.js -rw-r--r-- 1 p603563 users 71534 24. Aug 10:48 js_form-components_createPersonHelper_js-node_modules_date-fns_esm_isAfter_index_js-node_modu-311d7 -rw-r--r-- 1 p603563 users 78790 24. Aug 10:48 js_form-components_FileUpload_vue.js -rw-r--r-- 1 p603563 users 56993 24. Aug 10:48 js_form-components_MarkdownEditor_vue.js -rw-r--r-- 1 p603563 users 126606 24. Aug 10:48 js_globalActions_ts.js -rw-r--r-- 1 p603563 users 19572 24. Aug 10:48 js_group_details_composables_useRoles_ts-js_utils_date_ts-node_modules_perfect-scrollbarcss-27f59 -rw-r--r-- 1 p603563 users 39996 24. Aug 10:48 js_grouphomepage_groupHomepageHelper_ts-js_components_OsmCard_vue.js -rw-r--r-- 1 p603563 users 63294 24. Aug 10:48 js_privacy_PrivacyModal_vue.js -rw-r--r-- 1 p603563 users 636 24. Aug 10:48 js_profile_ResetPassword_vue.css -rw-r--r-- 1 p603563 users 4787 24. Aug 10:48 js_profile_ResetPassword_vue.js -rw-r--r-- 1 p603563 users 286955 24. Aug 10:48 js_publicRelations_components_forms_ProfileAddress_vue-js_publicRelations_components_forms_Pr-27689 -rw-r--r-- 1 p603563 users 21166 24. Aug 10:48 js_publicRelations_publicProfiles_forms_ProfileAddress_vue-js_publicRelationspublicProfiles-d92cb -rw-r--r-- 1 p603563 users 7934 24. Aug 10:48 jsstyleguide_layout_Grid_vue.js -rw-r--r-- 1 p603563 users 26833 24. Aug 10:48 jsstyleguide_widgets_WidgetActions_ts-js_group_details_composables_useRoles_ts-js_utils_date_ts.js -rw-r--r-- 1 p603563 users 31624 24. Aug 10:48 js_sync_details_ValueMappingTable_vue-js_sync_sidebars_SidebarStatus_vue.js -rw-r--r-- 1 p603563 users 23428 24. Aug 10:48 js_sync_executions_ExecutionsTables_vue-js_sync_log_LogFilter_vue-js_sync_log_LogTable_vue.js -rw-r--r-- 1 p603563 users 17780 24. Aug 10:48 js_utils_date_ts-jsstyleguide_layout_Grid_vue-node_modules_perfect-scrollbar_css_perfect-sc-28bd0 -rw-r--r-- 1 p603563 users 15130 24. Aug 10:48 js_utils_utils_ts-jsstyleguide_overlays_imageEdit_ImageEditModal_vue-jsstyleguide_overlay-20165 -rw-r--r-- 1 p603563 users 13559 24. Aug 10:48 js_validation_DefaultValidator_js.js -rw-r--r-- 1 p603563 users 147100 24. Aug 10:48 legacy.css -rw-r--r-- 1 p603563 users 448 24. Aug 10:48 legacy.js -rw-r--r-- 1 p603563 users 64 24. Aug 10:48 logs.css -rw-r--r-- 1 p603563 users 11008 24. Aug 10:48 logs.js -rw-r--r-- 1 p603563 users 70840 24. Aug 10:48 node_modules_date-fns_esm_isAfter_index_js-node_modules_date-fns_esm_isBefore_index_js-node_m-ed9d2 -rw-r--r-- 1 p603563 users 9168 24. Aug 10:48 node_modules_date-fns_esm_isAfter_index_js-node_modules_date-fns_esm_isBefore_index_js-node_m-ee328 -rw-r--r-- 1 p603563 users 17937 24. Aug 10:48 node_modules_perfect-scrollbar_css_perfect-scrollbar_css-jsstyleguide_form_InputFile_vue-js-d0c57 -rw-r--r-- 1 p603563 users 11391 24. Aug 10:48 pr.css -rw-r--r-- 1 p603563 users 99266 24. Aug 10:48 pr.js -rw-r--r-- 1 p603563 users 3667 24. Aug 10:48 profile.css -rw-r--r-- 1 p603563 users 48294 24. Aug 10:48 profile.js -rw-r--r-- 1 p603563 users 9894 24. Aug 10:48 prWidget.js -rw-r--r-- 1 p603563 users 24813 24. Aug 10:48 qrcode.js -rw-r--r-- 1 p603563 users 313 24. Aug 10:48 report.css -rw-r--r-- 1 p603563 users 28588 24. Aug 10:48 report.js -rw-r--r-- 1 p603563 users 6933 24. Aug 10:48 start.css -rw-r--r-- 1 p603563 users 58282 24. Aug 10:48 start.js -rw-r--r-- 1 p603563 users 368 24. Aug 10:48 supportUser.js drwxr-xr-x 2 p603563 users 5 24. Aug 10:48 swagger/ -rw-r--r-- 1 p603563 users 975 24. Aug 10:48 sync.css -rw-r--r-- 1 p603563 users 1790 24. Aug 10:48 sync-details.css -rw-r--r-- 1 p603563 users 52800 24. Aug 10:48 sync-details.js -rw-r--r-- 1 p603563 users 1786 24. Aug 10:48 sync-jobs.css -rw-r--r-- 1 p603563 users 125448 24. Aug 10:48 sync-jobs.js -rw-r--r-- 1 p603563 users 103232 24. Aug 10:48 sync.js -rw-r--r-- 1 p603563 users 165 24. Aug 10:48 tags.css -rw-r--r-- 1 p603563 users 8092 24. Aug 10:48 tags.js -rw-r--r-- 1 p603563 users 40257 24. Aug 10:48 tailwind.css -rw-r--r-- 1 p603563 users 448 24. Aug 10:48 tailwind.js -rw-r--r-- 1 p603563 users 332066 24. Aug 10:48 vendors-node_modules_codemirror_addon_hint_show-hint_js-node_modules_date-fns_esm_isAfter_ind-21eae -rw-r--r-- 1 p603563 users 16605 24. Aug 10:48 vendors-node_modules_codemirror_addon_hint_show-hint_js-node_modules_date-fns_esm_isAfter_ind-f88d5 -rw-r--r-- 1 p603563 users 18110 24. Aug 10:48 vendors-node_modules_date-fns_esm_addDays_index_js-node_modules_date-fns_esm_addMinutes_index-20c4e -rw-r--r-- 1 p603563 users 114925 24. Aug 10:48 vendors-node_modules_date-fns_esm_addDays_index_js-node_modules_date-fns_esm_isAfter_index_js-8bd0f -rw-r--r-- 1 p603563 users 100894 24. Aug 10:48 vendors-node_modules_date-fns_esm_addDays_index_js-node_modules_date-fns_esm_isAfter_index_js-cd453 -rw-r--r-- 1 p603563 users 32566 24. Aug 10:48 vendors-node_modules_date-fns_esm_addDays_index_js-node_modules_lodash_throttle_js.js -rw-r--r-- 1 p603563 users 54814 24. Aug 10:48 vendors-node_modules_date-fns_esm_add_index_js-node_modules_date-fns_esm_formatDuration_index-fbe67 -rw-r--r-- 1 p603563 users 177798 24. Aug 10:48 vendors-node_modules_date-fns_esm_addMinutes_index_js-node_modules_date-fns_esm_formatDistanc-33b87 -rw-r--r-- 1 p603563 users 207635 24. Aug 10:48 vendors-node_modules_date-fns_esm_addMinutes_index_js-node_modules_date-fns_esm_formatDistanc-90a2c -rw-r--r-- 1 p603563 users 54622 24. Aug 10:48 vendors-node_modules_date-fns_esm_addYears_index_js-node_modules_date-fns_esm_isAfter_index_j-8d042 -rw-r--r-- 1 p603563 users 43328 24. Aug 10:48 vendors-node_modules_date-fns_esm_differenceInCalendarYears_index_js-node_modules_date-fns_es-14bd7 -rw-r--r-- 1 p603563 users 162378 24. Aug 10:48 vendors-node_modules_date-fns_esm_differenceInCalendarYears_index_js-node_modules_date-fns_es-36b87 -rw-r--r-- 1 p603563 users 53420 24. Aug 10:48 vendors-node_modules_date-fns_esm_formatDuration_index_js-node_modules_date-fns_esm_intervalT-e48f1 -rw-r--r-- 1 p603563 users 50827 24. Aug 10:48 vendors-node_modules_date-fns_esm_isAfter_index_js-node_modules_date-fns_esm_isBefore_index_j-b4080 -rw-r--r-- 1 p603563 users 272045 24. Aug 10:48 vendors-node_modules_date-fns_esm_isWithinInterval_index_js-node_modules_lodash_camelCase_js--f949e -rw-r--r-- 1 p603563 users 350106 24. Aug 10:48 vendors-node_modules_jschardet_index_js-node_modules_papaparse_papaparse_min_js.js -rw-r--r-- 1 p603563 users 81 24. Aug 10:48 vendors-node_modules_jschardet_index_js-node_modules_papaparse_papaparse_min_js.js.LICENSE.txt -rw-r--r-- 1 p603563 users 144994 24. Aug 10:48 vendors-node_modules_leaflet_dist_leaflet-src_js.js -rw-r--r-- 1 p603563 users 153 24. Aug 10:48 vendors-node_modules_leaflet_dist_leaflet-src_js.js.LICENSE.txt -rw-r--r-- 1 p603563 users 58009 24. Aug 10:48 vendors-node_modules_lodash_camelCase_js.js -rw-r--r-- 1 p603563 users 262692 24. Aug 10:48 vendors-node_modules_lodash_camelCase_js-node_modules_pinia_dist_pinia_esm-browser_js.js -rw-r--r-- 1 p603563 users 11730 24. Aug 10:48 vendors-node_modules_lodash_debounce_js-node_modules_turndown_lib_turndown_browser_es_js.js -rw-r--r-- 1 p603563 users 98948 24. Aug 10:48 vendors-node_modules_perfect-scrollbar_css_perfect-scrollbar_css-node_modules_perfect-scrollb-93631 -rw-r--r-- 1 p603563 users 18404 24. Aug 10:48 vendors-node_modules_perfect-scrollbar_dist_perfect-scrollbar_esm_js.js -rw-r--r-- 1 p603563 users 117 24. Aug 10:48 vendors-node_modules_perfect-scrollbar_dist_perfect-scrollbar_esm_js.js.LICENSE.txt -rw-r--r-- 1 p603563 users 203899 24. Aug 10:48 vendors-node_modules_pinia_dist_pinia_esm-browser_js.js -rw-r--r-- 1 p603563 users 22177 24. Aug 10:48 vendors-node_modules_underscore_modules_index-all_js.js -rw-r--r-- 1 p603563 users 381391 24. Aug 10:48 vendors-node_modules_vue-loader_dist_exportHelper_js-node_modules_vue-router_distvue-router-82e9e -rw-r--r-- 1 p603563 users 23167 24. Aug 10:48 vendors-node_modules_vue-loader_dist_exportHelper_js-node_modules_vue-router_dist_vue-router_mjs.js
So I replaced the whole system directory with the original directory from the zip file. On the next run the updater doesn't recognize, that the latest version is already installed. So the update process is started again. Of course it truncates the filenames again.