Se você deseja o conteúdo de um único diretório, um método fácil é alterá-lo primeiro:
cd ~/my/folder
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z .
O que você viu é que se *expande para a lista de nomes de arquivos que não começam com a .. Esse é o comportamento documentado e é o principal motivo pelo qual os arquivos cujo nome começa com a .ficam ocultos (o outro é que lsnão os mostra por padrão).
Não existe uma maneira portátil realmente conveniente de listar todos os arquivos em um diretório. Você pode usar
~/my/folder/..?* ~/my/folder/.[!.]* ~/my/folder/*
mas se não houver um arquivo que corresponda a um dos padrões, o padrão permanecerá não expandido. No bash, você pode definir a dotglobopção para evitar o tratamento de um líder .especialmente ( .e ..ainda é excluído das correspondências):
shopt -s dotglob
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*
No ksh, ou no bash, se você definir a extglobopção (ou no zsh, se a ksh_globopção), você pode escrever um padrão que corresponda a todos os arquivos, exceto .e ..:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/@(..?*|.[!.]*|*)
No zsh, há uma maneira mais simples de dizer que .não deve ser tratado especialmente em um padrão:
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=off ~/my/folder.7z ~/my/folder/*(D)
*, tente removê-lo, o 7z deve arquivar todo o diretório.