diff --git a/dashboard/src/components/BackupSiteConfigDialog.vue b/dashboard/src/components/BackupSiteConfigDialog.vue index 06dc6b318..662c0a179 100644 --- a/dashboard/src/components/BackupSiteConfigDialog.vue +++ b/dashboard/src/components/BackupSiteConfigDialog.vue @@ -3,7 +3,7 @@ import { ref, useTemplateRef } from 'vue'; import { MaskedInput, Dialog, FormGroup, TextInput, Checkbox } from '@cloudron/pankow'; import { prettyBinarySize } from '@cloudron/pankow/utils'; -import { s3like, regionName } from '../utils.js'; +import { s3like, mountlike, regionName } from '../utils.js'; import BackupSitesModel from '../models/BackupSitesModel.js'; import SystemModel from '../models/SystemModel.js'; @@ -34,6 +34,7 @@ const mountOptionsUsername = ref(''); const mountOptionsPassword = ref(''); const mountOptionsUser = ref(''); const mountOptionsPrivateKey = ref(''); +const useHardlinks = ref(false); async function onSubmit() { busy.value = true; @@ -65,6 +66,10 @@ async function onSubmit() { if (mountOptionsPrivateKey.value) data.mountOptions.privateKey = mountOptionsPrivateKey.value; } + if ((provider.value === 'filesystem' || mountlike(provider.value)) && site.value.format === 'rsync') { + data.noHardlinks = !!useHardlinks.value; + } + // only call if anything has changed if (Object.keys(data).length) { const [error] = await backupSitesModel.setConfig(site.value.id, data); @@ -136,6 +141,10 @@ defineExpose({ mountOptionsPrivateKey.value = null; } + if ((provider.value === 'filesystem' || mountlike(provider.value)) && site.value.format === 'rsync') { + useHardlinks.value = !!t.config.noHardlinks; + } + await getMemory(); dialog.value.open(); @@ -202,6 +211,8 @@ defineExpose({ + +